Ticket #2310: pagereorder.patch
File pagereorder.patch, 5.2 KB (added by tanya, 15 years ago) |
---|
-
src/main/java/org/sophie2/main/app/layout/left/pages/PagePreviewPaletteLogic.java
### Eclipse Workspace Patch 1.0 #P org.sophie2.main.app.layout
6 6 import org.sophie2.base.commons.util.position.ImmRect; 7 7 import org.sophie2.base.dialogs.DialogManager; 8 8 import org.sophie2.base.dnd.DndData; 9 import org.sophie2.base.dnd.DndTransferable; 9 10 import org.sophie2.base.dnd.SophieDragDropHandler; 11 import org.sophie2.base.dnd.SophieTransferable; 12 import org.sophie2.base.dnd.SophieDragDropHandler.DndExport; 10 13 import org.sophie2.base.dnd.SophieDragDropHandler.DndImport; 11 14 import org.sophie2.base.dnd.SophieDragDropHandler.DndPreImport; 15 import org.sophie2.base.layout.model.ListPalette; 12 16 import org.sophie2.base.model.book.BookH; 13 17 import org.sophie2.base.model.book.PageH; 18 import org.sophie2.base.model.resources.r4.ResourceRefList; 14 19 import org.sophie2.base.model.resources.r4.ResourceRefR4; 20 import org.sophie2.base.model.resources.r4.changes.AutoAction; 21 import org.sophie2.base.model.resources.r4.resources.ResourceH; 15 22 import org.sophie2.base.visual.BaseVisualElement; 16 23 import org.sophie2.core.mvc.EventFilterBuilder; 17 24 import org.sophie2.core.mvc.LogicR3; … … 30 37 import org.sophie2.main.app.layout.left.pages.PagePreviewPalette.PageItem; 31 38 import org.sophie2.main.dialogs.input.ConfirmDialogInput; 32 39 import org.sophie2.main.dnd.TemplateRefData; 40 import org.sophie2.main.dnd.dnddata.ResourceRefData; 41 import org.sophie2.main.dnd.transferables.ResourceTransferable; 33 42 34 43 /** 35 44 * Event handlers for the {@link PagePreviewPalette}. … … 164 173 SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX, 165 174 DndPreImport.class); 166 175 167 preImport.setImportable(TemplateRefData.class); 176 preImport.setImportable(ResourceRefData.class, TemplateRefData.class); 177 } 178 return true; 179 } 180 }, 181 182 /** 183 * Handles dragging out a page from {@link PagePreviewPalette}. 184 */ 185 ON_DND_PAGE_EXPORT { 186 187 public void defineFilter(EventFilterBuilder filter) { 188 filter.setSourceClass(PagePreviewPalette.class); 189 filter.setEventId(SophieDragDropHandler.TransferEventIds.DND_EXPORT); 190 } 191 192 public boolean handle(EventR3 event) { 193 Object firstItem = event.getSource(ListPalette.class).firstSelectedItem().get(); 194 if (firstItem == null || !(firstItem instanceof PageItem)) { 195 return false; 168 196 } 197 ResourceH resource = ((PageItem) firstItem).pageView().get().model().get(); 198 199 SophieTransferable rt = new ResourceTransferable(resource); 200 201 DndExport export = event.getEventParam( 202 SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX, 203 DndExport.class); 204 205 export.setTransferable(rt); 206 169 207 return true; 170 208 } 209 171 210 }, 172 211 173 212 /** … … 254 293 255 294 return false; 256 295 } 296 }, 297 298 /** 299 * Handles dropping a page over the {@link PagePreviewPalette}. 300 * Reorders pages if the transferred object is a page and the page is from the same book. 301 */ 302 ON_DND_PAGE_REORDER { 303 304 public void defineFilter(EventFilterBuilder filter) { 305 filter.setSourceClass(PagePreviewPalette.class); 306 filter.setEventId(SophieDragDropHandler.TransferEventIds.DND_IMPORT); 307 } 308 309 public boolean handle(final EventR3 event) { 310 311 DndImport dndImport = event.getEventParam( 312 SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX, 313 DndImport.class); 314 DndTransferable transferable = dndImport.getTransferable(); 315 ResourceRefData data = transferable.getDndData(ResourceRefData.class); 316 317 if (data == null) { 318 return false; 319 } 320 321 ImmPoint point = event.getEventParam( 322 SophieDragDropHandler.TransferEventIds.POINT_PARAM_INDEX, 323 ImmPoint.class); 324 325 PagePreviewPalette palette = event.getSource(PagePreviewPalette.class); 326 final int dropIndex = palette.mainComponent().get().locationToIndex(point.toPoint()); 327 328 BookH book = AppViewUtil.getCurrentBook(palette); 329 final int dragIndex = book.getIndexOf(data.getResourceRef()); 330 331 if (dragIndex == -1 || dropIndex == -1) { 332 return false; 333 } 334 335 final ResourceRefList pages = book.getPages(); 336 337 new AutoAction("Reorder Pages.", true) { 338 339 @Override 340 public void performAuto() { 341 BookH.movePage(getChanger(), pages, dragIndex, dropIndex); 342 } 343 344 }.register(book.getAccess()); 345 346 return true; 347 } 257 348 }; 258 349 259 350 /** -
src/main/java/org/sophie2/main/app/layout/left/pages/PagePreviewPalette.java
261 261 @Override 262 262 protected JComponent initHead() { 263 263 SophieDragDropHandler.registerComponent(mainComponent().get(), 264 PagePreviewPalette.this, null, null, false, true);264 PagePreviewPalette.this, null, null, true, true); 265 265 266 266 JPanel res = new JPanel(); 267 267 res.setLayout(new BoxLayout(res, BoxLayout.X_AXIS));