Ticket #2316: bookTemplates2.patch
File bookTemplates2.patch, 24.0 KB (added by mira, 15 years ago) |
---|
-
src/main/java/org/sophie2/main/app/model/book/BookTemplateHelper.java
### Eclipse Workspace Patch 1.0 #P org.sophie2.main.app.model
3 3 import java.io.File; 4 4 import java.util.List; 5 5 6 import org.sophie2.base.model.resources.r4.access.AccessOptions; 6 7 import org.sophie2.base.model.resources.r4.access.ResourceLocator; 7 8 import org.sophie2.core.modularity.FileEntryManager; 8 9 import org.sophie2.core.prolib.impl.BaseProObject; … … 59 60 * @param locator 60 61 * The {@link ResourceLocator} used to obtains the book 61 62 * templates. 63 * @param options 64 * The access options used to load the book templates. 62 65 */ 63 public void loadTemplates(ResourceLocator locator ) {66 public void loadTemplates(ResourceLocator locator, AccessOptions options) { 64 67 for (String filename : getBookTemplateFiles()) { 65 68 File file = new File(filename); 66 bookTemplates().add(new BookTemplate(file, locator ));69 bookTemplates().add(new BookTemplate(file, locator, options)); 67 70 } 68 71 } 69 72 … … 76 79 private List<String> getBookTemplateFiles() { 77 80 return FileEntryManager.get().listFileEntries(BookTemplateHelper.BOOK_TEMPLATES_DIR); 78 81 } 82 79 83 } -
src/main/java/org/sophie2/main/app/model/book/BookTemplate.java
27 27 * The file containing the book. 28 28 * @param locator 29 29 * The {@link ResourceLocator} used to obtain the template. 30 * @param options 31 * The access options used to open access to the template. 30 32 */ 31 public BookTemplate(File file, ResourceLocator locator ) {33 public BookTemplate(File file, ResourceLocator locator, AccessOptions options) { 32 34 assert file != null; 33 35 34 36 try { 35 AccessOptions options = locator.getAccessOptions().modifyViewId(); 36 ResourceAccess book = locator.open(ResourceRefR4.make(file), 37 options); 37 ResourceAccess book = locator.open(ResourceRefR4.make(file), options); 38 38 getBean().init(book(), book); 39 39 40 40 } catch (RuntimeException e) { -
src/main/java/org/sophie2/main/app/commons/book/BookDocView.java
#P org.sophie2.main.app.commons
21 21 import org.sophie2.base.model.resources.r4.access.ResourceAccess; 22 22 import org.sophie2.base.model.resources.r4.access.mem.DelegatingMemAccess; 23 23 import org.sophie2.base.model.resources.r4.file.DelegatingFileAccess; 24 import org.sophie2.base.model.resources.r4.model.ResourceModel; 24 25 import org.sophie2.base.model.resources.r4.resources.ResourceH; 25 26 import org.sophie2.base.skins.SkinElementId; 26 27 import org.sophie2.core.prolib.annot.Own; … … 379 380 && !((DelegatingFileAccess) access).getSyncInfo().getLastSave().equals( 380 381 access.getHead().getId())); 381 382 } 383 384 /** 385 * Helper method used to create a new book from a given starting model 386 * and open it for editing. 387 * 388 * @param model 389 * The initial model. 390 * @param mainWindow 391 * The main window of the application. 392 */ 393 public static void makeNewBook(ResourceModel model, AppMainWindow mainWindow) { 394 ResourceAccess newBook = BookH.createBookAccess(mainWindow.locator().get(), model); 395 396 BookDocView bookView = AppViewUtil.getView(mainWindow, newBook, BookDocView.class); 397 mainWindow.documents().add(bookView); 398 mainWindow.currentDocument().set(bookView); 399 } 382 400 } -
pom.xml
#P org.sophie2.main.app.menus
94 94 <artifactId>org.sophie2.core.mvc</artifactId> 95 95 <version>2.0.2</version> 96 96 </dependency> 97 <!-- TODO: Added because of "Save book as template". Remove some day--> 98 <dependency> 99 <groupId>org.sophie2</groupId> 100 <artifactId>org.sophie2.main.app.layout</artifactId> 101 <version>2.0.2</version> 102 </dependency> 97 103 <dependency> 98 104 <groupId>org.sophie2</groupId> 99 105 <artifactId>org.sophie2.main.func.file</artifactId> -
src/main/java/org/sophie2/main/app/menus/file/FileMenuLogic.java
2 2 3 3 import java.io.File; 4 4 import java.io.IOException; 5 import java.util.List; 5 6 6 7 import org.sophie2.base.commons.util.position.ImmSize; 7 8 import org.sophie2.base.dialogs.DialogManager; … … 12 13 import org.sophie2.base.model.book.BookH; 13 14 import org.sophie2.base.model.book.resource.r4.BookR4; 14 15 import org.sophie2.base.model.resources.r4.ResourceRefR4; 16 import org.sophie2.base.model.resources.r4.access.AccessOptions; 15 17 import org.sophie2.base.model.resources.r4.access.BaseResourceAccess; 16 18 import org.sophie2.base.model.resources.r4.access.ResourceAccess; 19 import org.sophie2.base.model.resources.r4.access.ResourceLocator; 17 20 import org.sophie2.base.model.resources.r4.access.StoredResourceAccess; 18 21 import org.sophie2.base.model.resources.r4.changes.AutoAction; 19 22 import org.sophie2.base.model.resources.r4.changes.ResourceChanger; 23 import org.sophie2.base.model.resources.r4.model.ResourceRevision; 20 24 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 21 25 import org.sophie2.core.logging.SophieLog; 22 26 import org.sophie2.core.modularity.FileEntryManager; … … 32 36 import org.sophie2.main.app.commons.dialogs.BookPropertiesDialog; 33 37 import org.sophie2.main.app.commons.util.AppViewUtil; 34 38 import org.sophie2.main.app.commons.util.SaveDocUtil; 39 import org.sophie2.main.app.layout.right.library.BookTemplatesPalette; 35 40 import org.sophie2.main.app.model.book.BookTemplate; 36 41 import org.sophie2.main.app.model.book.BookTemplateHelper; 37 42 import org.sophie2.main.dialogs.input.DialogUtils; … … 186 191 public boolean handle(EventR3 event) { 187 192 SaveBookAsTemplateItem source = event.getSource(SaveBookAsTemplateItem.class); 188 193 BookDocView bookDocView = AppViewUtil.getCurrentBookDocView(source); 189 194 AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 195 ResourceLocator locator = mainWindow.locator().get(); 196 190 197 String bookTitle = bookDocView.bookView().get().model().get().getTitle(); 191 198 String fileName = FileDialogInput.appendFileExtension( 192 199 new File(bookTitle), FileDialogInput.BOOK_FILTER).getName(); 193 200 fileName = BookTemplateHelper.BOOK_TEMPLATES_DIR + "/" + fileName; 194 201 File file = FileEntryManager.get().getWritableFileEntry(fileName); 202 ResourceRefR4 templateRef = ResourceRefR4.make(file); 203 195 204 ResourceAccess access = bookDocView.getAccess(); 196 AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 197 StoredResourceAccess fileAccess = 198 (StoredResourceAccess) mainWindow.locator().get().create( 199 ResourceRefR4.make(file), access.getAccessOptions(), 200 ((BaseResourceAccess) access).getTopRevision()); 205 206 207 ResourceRevision revision = ((BaseResourceAccess) access).getTopRevision(); 208 AccessOptions options = BookTemplatesPalette.PALETTE_ACCESS_OPTIONS; 209 List<BookTemplate> bookTemplates = BookTemplateHelper.get().bookTemplates().get(); 210 for (int i = 0; i < bookTemplates.size(); i++) { 211 ResourceAccess templateAccess = bookTemplates.get(i).book().get(); 212 if (templateRef.equals(templateAccess.getRef())) { 213 BookTemplateHelper.get().bookTemplates().remove(i); 214 templateAccess.close(); 215 break; 216 } 217 } 218 StoredResourceAccess fileAccess = (StoredResourceAccess) locator.create( 219 templateRef, options , revision); 220 if (fileAccess == null) { 221 DialogUtils.showErrorDialog(bookDocView.swingComponent().get(), 222 "This template is curently in use.", "Couldn't Save Book Template"); 223 return false; 224 } 201 225 try { 202 226 fileAccess.save(null); 203 bookDocView.reopen(fileAccess);204 227 access.close(); 228 mainWindow.documents().get().remove(bookDocView); 229 mainWindow.currentDocument().set(null); 205 230 BookTemplateHelper.get().bookTemplates().add(new BookTemplate(fileAccess)); 206 231 } catch (IOException e) { 207 232 DialogUtils.showExceptionDialog(bookDocView.swingComponent().get(), -
src/main/java/org/sophie2/main/app/layout/right/library/BookTemplatesPalette.java
#P org.sophie2.main.app.layout
7 7 import org.sophie2.base.dnd.SophieDragDropHandler; 8 8 import org.sophie2.base.layout.model.ListPalette; 9 9 import org.sophie2.base.layout.model.ListPaletteItem; 10 import org.sophie2.base.model.resources.r4.access.AccessOptions; 10 11 import org.sophie2.base.model.resources.r4.access.ResourceLocator; 11 12 import org.sophie2.base.skins.SkinElementId; 12 13 import org.sophie2.core.mvc.EventParams; … … 29 30 ListPalette<BookTemplatesPalette.BookTemplateItem> { 30 31 31 32 /** 33 * AccessOptions used by this palette to load and keep its resources. 34 */ 35 public static final AccessOptions PALETTE_ACCESS_OPTIONS = 36 AccessOptions.DEFAULT_ACCESS_OPTIONS.modifyViewId(); 37 /** 32 38 * A display item for a template. 33 39 * 34 40 * @author milo … … 83 89 AppViewUtil.findMainWindow(BookTemplatesPalette.this); 84 90 if (mainWindow != null) { 85 91 ResourceLocator locator = mainWindow.locator().get(); 86 BookTemplateHelper.get().loadTemplates(locator );92 BookTemplateHelper.get().loadTemplates(locator, PALETTE_ACCESS_OPTIONS); 87 93 } 88 94 } 89 95 -
src/main/java/org/sophie2/main/app/layout/right/library/LibraryTabLogic.java
11 11 import org.sophie2.base.dnd.SophieTransferable; 12 12 import org.sophie2.base.dnd.SophieDragDropHandler.DndExport; 13 13 import org.sophie2.base.dnd.SophieDragDropHandler.DndImport; 14 import org.sophie2.base.layout.impl.DefaultDocView;15 14 import org.sophie2.base.layout.model.ListPalette; 16 15 import org.sophie2.base.model.book.FrameH; 17 16 import org.sophie2.base.model.book.PageH; … … 20 19 import org.sophie2.base.model.book.interfaces.MemberElement; 21 20 import org.sophie2.base.model.book.interfaces.ResourceFrame; 22 21 import org.sophie2.base.model.book.resource.r4.BookR4; 23 import org.sophie2.base.model.book.resource.r4.PageR4;24 22 import org.sophie2.base.model.book.timelines.ActivationChannel; 25 23 import org.sophie2.base.model.resources.r4.ResourceRefList; 26 24 import org.sophie2.base.model.resources.r4.ResourceRefR4; … … 29 27 import org.sophie2.base.model.resources.r4.changes.AutoAction; 30 28 import org.sophie2.base.model.resources.r4.changes.ResourceChanger; 31 29 import org.sophie2.base.model.resources.r4.keys.TemplatedKey; 30 import org.sophie2.base.model.resources.r4.model.ResourceModel; 32 31 import org.sophie2.base.model.resources.r4.resources.ResourceH; 33 32 import org.sophie2.base.model.resources.r4.resources.ResourceR4; 34 33 import org.sophie2.core.logging.SophieLog; … … 40 39 import org.sophie2.core.mvc.events.EventR3; 41 40 import org.sophie2.main.app.commons.app.AppMainWindow; 42 41 import org.sophie2.main.app.commons.book.BookDocView; 43 import org.sophie2.main.app.commons.dialogs.BookInfo;44 42 import org.sophie2.main.app.commons.frame.FrameView; 45 43 import org.sophie2.main.app.commons.page.PageWorkArea; 46 44 import org.sophie2.main.app.commons.page.RootPageView; … … 84 82 SophieLog.debug("This event will not be handled in preview mode!"); 85 83 return true; 86 84 } 87 85 88 86 PageWorkArea pwa = bookDocView.workArea().get(); 89 87 FrameView currentFrameView = pwa.getSel().getSingleSelected(FrameView.class); 90 88 … … 100 98 FrameH template = ((FrameTemplateItem)source.firstSelectedItem().get()).frame().get(); 101 99 102 100 assert template.getRef().isAbsolute(); 103 101 104 102 final ResourceRefR4 templateRef = ResourceRefR4.getRelativeRef(frameAccess.getRef(), 105 103 template.getRef()); 106 104 final String templateKind = frameAccess.open(templateRef, null).getRaw(ResourceR4.KEY_KIND); … … 117 115 } 118 116 119 117 }.register(frameAccess); 120 118 121 119 bookDocView.workArea().get().getSel().getEditScope().selectLastElement(); 122 120 123 121 return true; 124 122 } 125 123 126 124 }, 127 125 128 126 /** 129 127 * Handles a request by the user to delete the selected frame template. 130 128 */ … … 147 145 SophieLog.debug("This event will not be handled in preview mode!"); 148 146 return true; 149 147 } 150 148 151 149 assert source.firstSelectedItem().get() instanceof FrameTemplateItem; 152 150 assert source.firstSelectedItem().get() != null; 153 151 FrameTemplateItem firstItem = (FrameTemplateItem)source.firstSelectedItem().get(); … … 159 157 String frameTitle = ResourceR4.KEY_TITLE.get(bookDocView.getAccess().open(template, null)); 160 158 if (confirmDeletion(frameTitle, bookDocView.swingComponent().get())) { 161 159 new AutoAction("Delete frame template.", true) { 162 160 163 161 @Override 164 162 public void performAuto() { 165 163 ResourceRefList templates = getChanger().getRaw(BookR4.KEY_FRAME_TEMPLATES); … … 174 172 } 175 173 176 174 }, 175 177 176 /** 178 177 * Handles the dragging a frame template out of the 179 178 * {@link FrameTemplatesPalette}. … … 210 209 } 211 210 212 211 public boolean handle(EventR3 event) { 213 DndImport dndImport = event 214 .getEventParam(SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX, 215 DndImport.class); 212 int transIndex = SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX; 213 DndImport dndImport = event.getEventParam(transIndex, DndImport.class); 216 214 DndTransferable transferable = dndImport.getTransferable(); 217 215 218 216 PageWorkArea source = event.getSource(PageWorkArea.class); … … 220 218 ResourceAccess bookAccess = bookDocView.getAccess(); 221 219 PageH page = source.getRootPageView().model().get(); 222 220 223 if (transferable.getDndData(ResourceRefData.class) != null) {224 ResourceRefR4 templateRef = transferable.getDndData(ResourceRefData.class)225 221 ResourceRefData refData = transferable.getDndData(ResourceRefData.class); 222 if (refData != null) { 223 ResourceRefR4 templateRef = refData.getResourceRef(); 226 224 assert templateRef.isAbsolute(); 227 225 if (templateRef.getLocation().startsWith(bookAccess.getRef().getLocation())) { 228 226 ResourceRefR4 bookToTemplate = ResourceRefR4.getRelativeRef( … … 231 229 if (BookR4.KEY_FRAME_TEMPLATES.get(bookAccess).contains(bookToTemplate)) { 232 230 ResourceAccess templateAccess = bookAccess.open(templateRef, null); 233 231 234 final ResourceRefR4 frameRef = ResourceRefR4 235 .generateRandomSub(FrameH.NAME_PREFIX); 232 final ResourceRefR4 frameRef = ResourceRefR4.generateRandomSub(FrameH.NAME_PREFIX); 236 233 final ResourceRefR4 frameToTemplate = ResourceRefR4.getRelativeRef(page 237 234 .getAccess().getRef().sub(frameRef), templateRef); 238 235 final String frameTitle = ResourceUtil.getNextTitle(bookAccess.getRef(), 239 236 FrameR4.DEFAULT_TITLE); 240 237 final ImmList<ActivationChannel> elements = CompositeElement.KEY_SUB_ELEMENTS 241 238 .get(page.getAccess()); 242 239 final String kind = ResourceR4.KEY_KIND.get(templateAccess); 243 240 final ImmPoint pos = event.getEventParam( 244 241 SophieDragDropHandler.TransferEventIds.POINT_PARAM_INDEX, … … 286 283 BookDocView bookDocView = AppViewUtil.getCurrentBookDocView(source); 287 284 assert bookDocView != null : 288 285 "There is no current book on which to apply the page template."; 289 286 290 287 // Disables template logic in preview mode. 291 288 if (bookDocView.bookView().get().getViewOptions().isPreviewMode()) { 292 289 SophieLog.debug("This event will not be handled in preview mode!"); 293 290 return true; 294 291 } 295 292 296 293 if (bookDocView.workArea().get().getRootPageView() != null) { 297 294 ResourceAccess pageAccess = bookDocView.workArea().get().getRootPageView().getAccess(); 298 295 assert source.firstSelectedItem().get() instanceof PageTemplateItem; … … 315 312 return true; 316 313 } 317 314 }, 315 318 316 /** 319 317 * Handles a request by the user to delete the selected page template. 320 318 */ … … 337 335 SophieLog.debug("This event will not be handled in preview mode!"); 338 336 return true; 339 337 } 340 338 341 339 assert source.firstSelectedItem().get() instanceof PageTemplateItem; 342 340 assert source.firstSelectedItem().get() != null; 343 341 PageTemplateItem firstItem = (PageTemplateItem)source.firstSelectedItem().get(); … … 347 345 SophieLog.debug("Delete template " + template.getLocation()); 348 346 349 347 String pageTitle = ResourceR4.KEY_TITLE.get(bookDocView.getAccess().open(template, null)); 350 348 351 349 if (confirmDeletion(pageTitle, bookDocView.swingComponent().get())) { 352 350 new AutoAction("Delete page template", true) { 353 351 354 352 @Override 355 353 public void performAuto() { 356 354 ResourceRefList templates = getChanger().getRaw(BookR4.KEY_PAGE_TEMPLATES); … … 404 402 return false; 405 403 } 406 404 }, 405 407 406 /** 408 407 * Handles a user request to open a given book template for editing. 409 408 */ … … 421 420 422 421 assert source.firstSelectedItem().get() instanceof BookTemplateItem; 423 422 assert source.firstSelectedItem().get() != null; 424 BookTemplateItem firstItem = (BookTemplateItem) source.firstSelectedItem().get();423 BookTemplateItem firstItem = (BookTemplateItem) source.firstSelectedItem().get(); 425 424 426 BookDocView bookView = AppViewUtil.getView(mainWindow, firstItem.bookTemplate().get().book().get(), BookDocView.class); 427 if (mainWindow.documents().get().contains(bookView)) { 428 LogicR3.fire(bookView, null, null, null, DefaultDocView.EventIds.SELECT); 429 } else { 430 mainWindow.documents().add(bookView); 431 } 425 //Always make a new book. Do not give the access used in the book template items. 426 //Otherwise someone can close it. 427 ResourceModel model = firstItem.bookTemplate().get().book().get().getHead().getModel(); 428 BookDocView.makeNewBook(model, mainWindow); 432 429 433 430 return true; 434 431 } … … 457 454 return true; 458 455 } 459 456 }, 460 457 461 458 /** 462 459 * Handles the dragging a book template in the work area. Creates a new book 463 460 * from that template if the drag is on the book desktop. Embeds the … … 472 469 } 473 470 474 471 public boolean handle(EventR3 event) { 475 DndImport dndImport = event 476 .getEventParam(SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX, 477 DndImport.class); 472 int paramIndex = SophieDragDropHandler.TransferEventIds.TRANSACTION_PARAM_INDEX; 473 DndImport dndImport = event.getEventParam(paramIndex, DndImport.class); 478 474 DndTransferable transferable = dndImport.getTransferable(); 479 475 480 476 PageWorkArea source = event.getSource(PageWorkArea.class); 481 477 AppMainWindow mainWindow = AppViewUtil.findMainWindow(source); 482 478 BookDocView bookDocView = source.findParentElement(BookDocView.class); 483 479 484 if (transferable.getDndData(ResourceRefData.class) != null) { 485 final ResourceRefR4 templateRef = transferable.getDndData(ResourceRefData.class) 486 .getResourceRef(); 487 assert templateRef.isAbsolute(); 488 if (templateRef.getLocation().startsWith( 489 bookDocView.model().get().getRef().getLocation())) { 490 String kind = ResourceR4.KEY_KIND.get(mainWindow.locator().get().open( 491 templateRef, null)); 480 ResourceRefData data = transferable.getDndData(ResourceRefData.class); 481 if (data != null) { 482 final ResourceRefR4 templateRef = data.getResourceRef(); 483 assert templateRef.isAbsolute() : "The transferable ref should be absolute."; 492 484 493 if (kind.equals(BookR4.KIND)) { 494 // check if this is the book desktop or not 495 if (mainWindow.desktopDocument().get() == bookDocView) { 496 // create a new book from the template 497 498 BookDocView bookView = BookDocView.create(mainWindow, 499 BookInfo.getDefaultInfo()); 500 501 DefaultDocView.setCurrent(bookView); 502 503 final ResourceAccess templateAccess = bookView.getAccess().open( 504 templateRef, null); 505 506 final ImmList<ResourceRefR4> templatePages = BookR4.KEY_PAGES 507 .get(templateAccess); 508 509 // transforming the list of ResourceRefs to absolute 510 // refs 511 ResourceRefList absTemplatePages = ResourceRefList.EMPTY; 512 for (ResourceRefR4 r : templatePages) { 513 ResourceRefR4 abs = templateAccess.open(r, null).getRef(); 514 absTemplatePages = absTemplatePages.add(abs); 515 } 516 final ResourceRefList finalAbsTemplatePages = absTemplatePages; 517 final ResourceRefR4 bookRef = bookView.getAccess().getRef(); 518 519 new AutoAction("Create new book from a template.", true) { 520 @Override 521 public void performAuto() { 522 getChanger().setRaw(ResourceR4.KEY_TEMPLATE, templateRef); 523 getChanger().setRaw(BookR4.KEY_PAGE_SIZE, null); 524 ResourceRefList curPages = ResourceRefList.EMPTY; 525 for (ResourceRefR4 ref : finalAbsTemplatePages) { 526 ResourceRefR4 pageRef = ResourceRefR4 527 .generateRandomSub(PageH.NAME_PREFIX); 528 String pageTitle = ResourceUtil.getNextTitle(bookRef, 529 PageR4.DEFAULT_TITLE); 530 getChanger().makeResource(pageRef); 531 getChanger().getSub(pageRef).setRaw(ResourceR4.KEY_KIND, 532 PageR4.KIND); 533 getChanger().getSub(pageRef).setRaw( 534 ResourceR4.KEY_TEMPLATE, ref); 535 getChanger().getSub(pageRef).setRaw(ResourceR4.KEY_TITLE, 536 pageTitle); 537 curPages = curPages.add(pageRef); 538 539 // TODO remove this when templating of 540 // sub elements if fixed... 541 getChanger().getSub(pageRef).setRaw( 542 CompositeElement.KEY_SUB_ELEMENTS, 543 CompositeElement.KEY_SUB_ELEMENTS.getDefault()); 544 545 } 546 getChanger().setRaw(BookR4.KEY_PAGES, curPages); 547 } 548 549 }.register(bookView.getAccess()); 550 } else { 551 // embed the template in the current book 552 final ImmPoint pos = event.getEventParam( 553 SophieDragDropHandler.TransferEventIds.POINT_PARAM_INDEX, 554 ImmPoint.class); 555 556 LogicR3.fire(source, null, null, null, EventIds.EMBED_BOOK_TEMPLATE, 557 dndImport, pos); 558 } 559 return true; 485 ResourceAccess templateAccess = mainWindow.locator().get().open( 486 templateRef, null); 487 String kind = ResourceR4.KEY_KIND.get(templateAccess); 488 if (kind.equals(BookR4.KIND)) { 489 // check if this is the book desktop or not 490 if (mainWindow.desktopDocument().get() == bookDocView) { 491 // create a new book from the template 492 ResourceModel model = templateAccess.getHead().getModel(); 493 BookDocView.makeNewBook(model, mainWindow); 494 } else { 495 // embed the template in the current book 496 int pointParamIndex = SophieDragDropHandler.TransferEventIds.POINT_PARAM_INDEX; 497 ImmPoint pos = event.getEventParam(pointParamIndex, ImmPoint.class); 498 LogicR3.fire(source, null, null, null, EventIds.EMBED_BOOK_TEMPLATE, 499 dndImport, pos); 560 500 } 501 //close the tmp access. 502 templateAccess.close(); 503 return true; 561 504 } 562 505 } 563 506 return false; … … 619 562 } 620 563 } 621 564 } 622 565 623 566 /** 624 567 * Shows a confirmation dialog if a template should be deleted. 625 568 * … … 635 578 "Confirm removal", false); 636 579 return DialogManager.get().showDialog(cdi) == ConfirmDialogInput.Response.YES; 637 580 } 638 581 639 582 /** 640 583 * Ids for events for this tab. 641 584 * … … 648 591 @EventParams({DndImport.class, ImmPoint.class}) 649 592 EMBED_BOOK_TEMPLATE, 650 593 } 651 652 594 595 653 596 /** 654 597 * The parameter index of the DND import. 655 598 */ 656 599 public static final int DND_IMPORT_PARAM_INDEX = 0; 657 600 658 601 /** 659 602 * The parameter index of the point. 660 603 */