Ticket #2115: 2115.patch

File 2115.patch, 5.6 KB (added by boyan, 16 years ago)
  • modules/org.sophie2.main.func.text/src/main/java/org/sophie2/main/func/text/chaining/TextChainingLogic.java

    ### Eclipse Workspace Patch 1.0
    #P sophie2-platform
     
    55import org.sophie2.base.bound.BoundControl; 
    66import org.sophie2.base.bound.ComboInput; 
    77import org.sophie2.base.commons.util.ImmMap; 
     8import org.sophie2.base.commons.util.NaiveImmList; 
    89import org.sophie2.base.commons.util.ImmMap.ImmEntry; 
    910import org.sophie2.base.halos.HaloButton; 
    1011import org.sophie2.base.model.book.BookH; 
     12import org.sophie2.base.model.book.FrameH; 
    1113import org.sophie2.base.model.book.PageH; 
    1214import org.sophie2.base.model.book.frame.FrameR4; 
    1315import org.sophie2.base.model.book.interfaces.ResourceFrame; 
     
    1921import org.sophie2.base.model.resources.r4.access.ResourceAccess; 
    2022import org.sophie2.base.model.resources.r4.changes.AutoAction; 
    2123import org.sophie2.base.model.resources.r4.changes.ResourceChanger; 
     24import org.sophie2.base.model.resources.r4.keys.TemplatedKey; 
    2225import org.sophie2.base.model.resources.r4.resources.ResourceH; 
    2326import org.sophie2.base.model.resources.r4.resources.ResourceR4; 
    2427import org.sophie2.base.model.text.mvc.TextViewFlow; 
    2528import org.sophie2.base.model.text.smart.ImmHotText; 
    2629import org.sophie2.base.model.text.smart.position.HotInterval; 
     30import org.sophie2.core.logging.SophieLog; 
    2731import org.sophie2.core.mvc.EventFilterBuilder; 
    2832import org.sophie2.core.mvc.OperationDef; 
    2933import org.sophie2.core.mvc.SortKey; 
     
    3438import org.sophie2.main.app.halos.frame.FrameRemoveHaloButton; 
    3539import org.sophie2.main.app.layout.left.pages.PagePreviewPalette; 
    3640import org.sophie2.main.app.layout.left.pages.PagePreviewPalette.PageItem; 
     41import org.sophie2.main.app.layout.right.library.LibraryTabLogic; 
    3742import org.sophie2.main.func.text.chaining.TextChainHud.AutoChainButton; 
    3843import org.sophie2.main.func.text.chaining.TextChainHud.TextChainComboBox; 
    3944import org.sophie2.main.func.text.model.HeadTextFrameH; 
     
    111116 
    112117                        int curIndex = book.getIndexOf(curPage);                         
    113118                        int chainIndex = 1; 
     119                         
     120                         
     121                         
    114122 
    115123                        // ----- start templating stuff ------- 
    116124                        final ResourceRefR4 frameRef = selFrameView.model().get().getRef(); 
     
    160168                                ResourceRefR4 toChainRef = HeadTextFrameH.createTextFrameAction( 
    161169                                                book, page, ImmHotText.empty(), ResourceRefR4.NONE_REF.toUri(), 
    162170                                                null, "Insert text frame", false); 
     171                                 
     172                                 
    163173 
    164174                                chainTextFrame(selFrameView, toChainRef, chainIndex, false, templateRef); 
    165175 
     
    392402         *            Whether the action for chaining the frame is significant. 
    393403         *            Should be false when this is used in auto chaining, for 
    394404         *            example. 
    395          * @param template  
     405         * @param templateRef  
    396406         *                              The template to use for the newly created frame. 
    397407         * @return  
    398408         *                              True if the chaining operation was successful, false otherwise. 
    399409         */ 
    400410        static final boolean chainTextFrame(TextFrameView prevView, final ResourceRefR4 toChainRef, 
    401                         int offset, boolean significant, final ResourceRefR4 template) { 
     411                        int offset, boolean significant, final ResourceRefR4 templateRef) { 
    402412 
    403413                BookView bookView = prevView.getBookView(); 
    404414                ResourceAccess bookAccess = bookView.getAccess(); 
     
    461471                                        }} 
    462472                        }.register(bookView.getAccess()); 
    463473                } 
     474                 
     475                if (!ResourceRefR4.NONE_REF.equals(templateRef)) { 
     476                        FrameH template = ResourceH.getHelper(toChainAccess.open(templateRef, null), FrameH.class); 
     477 
     478                        final String templateKind = template.getAccess().getRaw(ResourceR4.KEY_KIND); 
     479 
     480                        SophieLog.debug("Applying frame template from " + templateRef); 
     481 
     482                        final NaiveImmList<TemplatedKey<?>> immKeys = template.getApplicableTemplatedKeys(); 
     483 
     484                        new AutoAction("Apply frame template", false) { 
     485 
     486                                @Override 
     487                                public void performAuto() { 
     488                                        LibraryTabLogic.applyFrameTemplate(getChanger(), immKeys, templateRef, false, templateKind); 
     489                                } 
     490 
     491                        }.register(toChainAccess); 
     492                } 
    464493 
    465494                new AutoAction("Chain text frame", significant) { 
    466495 
     
    471500                                frameCh.setRaw(ResourceR4.KEY_KIND, TailTextFrameR4.KIND); 
    472501                                frameCh.setRaw(TailTextFrameR4.KEY_HEAD_REFERENCE, headFrameRef); 
    473502                                frameCh.setRaw(TailTextFrameR4.KEY_CHAIN_ORDER, chainOrder); 
    474                                 frameCh.setRaw(ResourceR4.KEY_TEMPLATE, template); 
    475503                        } 
    476504 
    477505                }.register(bookAccess); 
  • modules/org.sophie2.main.app.layout/src/main/java/org/sophie2/main/app/layout/right/library/LibraryTabLogic.java

     
    543543         * @param templateKind 
    544544         *            The kind of the frame template. 
    545545         */ 
    546         static void applyFrameTemplate(ResourceChanger changer, final NaiveImmList<TemplatedKey<?>> immValues, final ResourceRefR4 templateRef, boolean skipLocationKey, String templateKind) { 
     546        public static void applyFrameTemplate(ResourceChanger changer, final NaiveImmList<TemplatedKey<?>> immValues, final ResourceRefR4 templateRef, boolean skipLocationKey, String templateKind) { 
    547547                changer.setRaw(ResourceR4.KEY_TEMPLATE, templateRef); 
    548548                for(TemplatedKey<?> key : immValues) { 
    549549                        if (!key.equals(MemberElement.KEY_LOCATION) || !skipLocationKey) {