TEXT_INPLACE_EDITOR_R0: TEXT_INPLACE_EDITOR-demo-27.04.2009.patch

File TEXT_INPLACE_EDITOR-demo-27.04.2009.patch, 2.5 KB (added by nenko, 16 years ago)

Patch for the demo to show the functionality that will be added

  • src/test/java/org/sophie2/base/model/text/SwingDemoTest.java

    ### Eclipse Workspace Patch 1.0
    #P org.sophie2.base.model.text
     
    7171                                .setString("Bla bla bla ! 1 :) : ) :) : ): ) :) \n2 :) : ): )\n :) :):)"); 
    7272                HotTextPane pane = new HotTextPane(); 
    7373                pane.text().set(text); 
     74                pane.caretPos().set(text.navigator().get().getBeginning()); 
     75                pane.markPos().set(text.navigator().get().getBeginning()); 
    7476                pane.bounds().set(new ImmRect(0, 0, 300, 300)); 
    7577 
    7678                JButton bold = new JButton("Bold"); 
  • src/main/java/org/sophie2/base/model/text/swing/HotTextPaneLogic.java

     
    11package org.sophie2.base.model.text.swing; 
    22 
    33import java.awt.event.KeyEvent; 
     4import java.util.ArrayList; 
    45import java.util.Arrays; 
    56 
    67import org.sophie2.base.model.text.HotPos; 
     
    7071                        //TODO: This unwrapping is bad. The INSERT_CHAR event should have a parameter instead. 
    7172                        EventR3 kbdEvent = event.getCausingEvent(EventR3.class); 
    7273                        KeyEvent awtKeyEvent = kbdEvent.getCausingEvent(KeyEvent.class); 
     74                        if (awtKeyEvent.getKeyChar() == '\b') { 
     75                                return false; 
     76                        } 
    7377                        text.replaceText(source.caretPos().get(), source.caretPos().get(), 
    7478                                        Arrays.asList(new HotUnit(awtKeyEvent.getKeyChar()))); 
     79                        source.text().set(text); 
    7580 
    7681                        // 
    7782                        // text.replaceText(source.caretPos().get(), 
     
    140145                        return textPane.caretPos().get(); 
    141146                } 
    142147 
    143         } 
     148        },  
     149         
     150        /** 
     151         * Defines the behavior when deleting text. 
     152         *  
     153         * @author nenko 
     154         *  
     155         */ 
     156        DELETE_TEXT { 
     157 
     158                @Override 
     159                public void defineFilter(EventFilterBuilder filter) { 
     160                        filter.setSourceClass(HotTextPane.class); 
     161                        filter.setEventId(HotTextPane.Ops.DELETE); 
     162                } 
     163 
     164                @Override 
     165                public boolean handle(EventR3 event) { 
     166                        HotTextPane source = event 
     167                                        .getSource(HotTextPane.class); 
     168 
     169                        HotText text = source.text().get(); 
     170                        Navigator nav = text.navigator().get(); 
     171                        HotPos beforeEnd = nav.advance(nav.getEnd(), -1); 
     172                        text.replaceText(beforeEnd, nav.getEnd(), 
     173                                        new ArrayList<HotUnit>()); 
     174 
     175                        source.text().set(text); 
     176 
     177                        return true; 
     178                } 
     179 
     180        }, 
    144181 
    145182} 
     183 No newline at end of file