Changeset 1178


Ignore:
Timestamp:
09/28/18 10:36:27 (6 years ago)
Author:
bln4
Message:

org.expeditee.items.widgets.SampleWidget1 ->
org.expeditee.items.widgets.SampleWidget2 ->

Code tidying and additional functionality for the purposes of testing.

org.expeditee.items.widgets.SampleWidget3 ->

A new sample widget that was used to assist with debugging widget reimplementation.

Location:
trunk/src/org/expeditee/items/widgets
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/items/widgets/SampleWidget1.java

    r919 r1178  
    1919package org.expeditee.items.widgets;
    2020
     21import java.awt.Component;
     22import java.awt.event.ActionEvent;
     23import java.awt.event.ActionListener;
     24import java.awt.event.FocusEvent;
     25import java.awt.event.FocusListener;
     26import java.awt.event.ItemEvent;
     27import java.awt.event.ItemListener;
     28
     29import javax.swing.InputVerifier;
    2130import javax.swing.JComboBox;
     31import javax.swing.JComponent;
    2232
    2333import org.expeditee.items.Text;
     
    2535public class SampleWidget1 extends DataFrameWidget {
    2636
    27         static String testItems[] = new String[] { "dog", "fish", "cat", "pig" };
    28 
    29         private JComboBox _combo;
     37        private static final String[] STRINGS = new String[] { "dog", "fish", "cat", "pig" };
     38        //private static final String[] STRINGS = new String[] { "1", "2", "3", "4", "1", "2", "3", "4", "1", "2", "3", "4", "1", "2", "3", "4" };
     39        private JComboBox<String> cmboOptions;
    3040
    3141        public SampleWidget1(Text source, String[] args) {
    32                 super(source, new JComboBox(testItems), 200, 200, 50, 50);
    33                 _combo = (JComboBox) super._swingComponent;
     42                super(source,  new JComboBox<String>(STRINGS), 200, 200, 50, 50);
     43                cmboOptions = (JComboBox<String>) _swingComponent;
     44                final DisplaySelection listener = new DisplaySelection();
     45                cmboOptions.addActionListener(listener);
     46                cmboOptions.addItemListener(listener);
     47                cmboOptions.addFocusListener(listener);
     48                cmboOptions.setInputVerifier(listener);
     49                for (Component c : cmboOptions.getComponents()) {
     50                        c.setFocusable(true);
     51                }
     52        }
     53               
     54        private void printParents(final java.awt.Component component) {
     55                if(component.getParent() != null) {
     56                        printParents(component.getParent());
     57                        System.err.println("Component: " + component);
     58                } else {
     59                        System.err.println("Component: " + component);
     60                }
     61        }
     62
     63        private final class DisplaySelection extends InputVerifier implements ActionListener, ItemListener, FocusListener {
     64                @Override
     65                public void actionPerformed(final ActionEvent e) {
     66                        System.err.println("Selected Item: " + cmboOptions.getSelectedItem());
     67                }
     68
     69                @Override
     70                public void itemStateChanged(final ItemEvent e) {
     71                        if(e.getStateChange() == ItemEvent.SELECTED) {
     72                                System.err.println("Combobox Selected");
     73                                System.err.println("SampleWidget1::main component children count: " + cmboOptions.getComponents().length);
     74                        } else if (e.getStateChange() == ItemEvent.DESELECTED) {
     75                                System.err.println("Combobox Lost Selection");
     76                                System.err.println("SampleWidget1::main component children count: " + cmboOptions.getComponents().length);
     77                        } else {
     78                                System.err.println("Unexpected Combobox e.getStateChange(): " + e.getStateChange());
     79                        }
     80                }
     81
     82                @Override
     83                public void focusGained(FocusEvent e) {
     84                        System.err.println("Combobox focus gained");
     85                }
     86
     87                @Override
     88                public void focusLost(FocusEvent e) {
     89                        System.err.println("Combobox focus lost");
     90                }
     91
     92                @Override
     93                public boolean verify(JComponent input) {
     94                        return true;
     95                        //return !cmboOptions.isPopupVisible();
     96                }
    3497        }
    3598
     
    37100        protected String[] getArgs() {
    38101                String[] stateArgs = new String[1];
    39                 stateArgs[0] = Integer.toString(_combo.getSelectedIndex());
     102                stateArgs[0] = Integer.toString(cmboOptions.getSelectedIndex());
    40103                return stateArgs;
    41104        }
    42        
     105
    43106        /** TODO: REVISE
    44107        @Override
  • trunk/src/org/expeditee/items/widgets/SampleWidget2.java

    r1102 r1178  
    2121import java.awt.FlowLayout;
    2222import java.awt.Font;
     23import java.awt.event.ActionEvent;
     24import java.awt.event.ActionListener;
     25import java.awt.event.ItemEvent;
     26import java.awt.event.ItemListener;
     27import java.util.Random;
    2328
    2429import javax.swing.JCheckBox;
     
    3237import org.expeditee.core.Colour;
    3338import org.expeditee.gio.swing.SwingConversions;
     39import org.expeditee.gio.swing.SwingFontManager;
    3440import org.expeditee.items.Text;
    3541
    3642public class SampleWidget2 extends SwingWidget {
    37        
    38         private JComboBox _combo;
    39         private JTextArea _text;
    40        
     43
     44        private static final Font STANDARD_FONT = SwingFontManager.getInstance().getInternalFont(SwingFontManager.getInstance().getDefaultFont());
     45        private static final Font BIG_FONT = STANDARD_FONT.deriveFont(STANDARD_FONT.getSize() * 2f);
     46        private final JComboBox<String> cmboPrepend;
     47        private final JTextArea utxt = new JTextArea();;
     48               
    4149        public SampleWidget2(Text source, String[] args) {
    4250                super(source, new JSplitPane(JSplitPane.VERTICAL_SPLIT), 60, -1, 40, -1);
     51                final JSplitPane sp = (JSplitPane)super._swingComponent;
     52               
     53                //Build controls area.
     54                final JPanel controls = new JPanel(new FlowLayout());
     55                controls.setBackground(SwingConversions.toSwingColor(Colour.FromRGB255(255,228,195)));
     56               
     57                final JLabel lblTitle = new JLabel("This is an example Widget!");
     58                lblTitle.setFont(BIG_FONT);
     59               
     60                final JToggleButton tbtnStyle = new JToggleButton("Toggle Style");
     61                tbtnStyle.setFont(BIG_FONT);
     62                tbtnStyle.addItemListener(new ToggleStyle(utxt));
     63               
     64                final JCheckBox ckbBigFont = new JCheckBox("Big Font");
     65                ckbBigFont.setBackground(null);
     66                ckbBigFont.setSelected(true);
     67                ckbBigFont.setFont(BIG_FONT);
     68                ckbBigFont.addItemListener(new ToggleBigFont(utxt));
     69               
     70                final Random r = new Random();
     71                final String[] options = new String[] { "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100),
     72                                "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100), "Item: " + r.nextInt(100) };
     73                cmboPrepend = new JComboBox<String>(options);
     74                cmboPrepend.setFont(BIG_FONT);
     75                cmboPrepend.addActionListener(new PrependManager(cmboPrepend, utxt));
     76               
     77                controls.add(lblTitle);
     78                controls.add(cmboPrepend);
     79                controls.add(tbtnStyle);
     80                controls.add(ckbBigFont);               
     81                sp.setTopComponent(controls);
     82               
     83                //Build user text area.
     84                utxt.setFont(BIG_FONT);
     85                sp.setBottomComponent(utxt);
    4386
    44                 Font bigFont = null;
    45                
    46                 JSplitPane sp = (JSplitPane)super._swingComponent;
    47                
    48                 JPanel p = new JPanel(new FlowLayout());
    49                 p.setBackground(SwingConversions.toSwingColor(Colour.FromRGB255(255,228,195)));
     87                //Initialise state
     88                init(args, cmboPrepend, utxt);         
     89        }
    5090
    51                 JLabel lbl = new JLabel("This is an example InteractiveWidget!");
    52                 bigFont = lbl.getFont().deriveFont(24F);
    53                 lbl.setFont(bigFont);
    54                
    55                 JToggleButton button = new JToggleButton("Toggle Style");
    56                 button.setFont(bigFont);
    57                
    58                 JCheckBox checkBox = new JCheckBox("Big Font");
    59                 checkBox.setBackground(null);
    60                 checkBox.setSelected(true);
    61                 checkBox.setFont(bigFont);
    62                
    63                
    64                 //JButton button2 = new JButton("Example CheckBox");
    65                
    66                 _text = new JTextArea();
    67                 _text.setFont(bigFont);
    68                
    69                 _combo = new JComboBox(new String[] {"Peach", "Item 2", "Item 3", "Item 21", "Item 22", "Item 23", "Item 31", "Item 32", "Item 33", "Item 41", "Item 42", "Item 43"});
    70                 _combo.setFont(bigFont);
    71                
    72                 p.add(lbl);
    73                 p.add(_combo);
    74                 p.add(button);
    75                 p.add(checkBox);
    76                
    77                 sp.setTopComponent(p);
    78                 sp.setBottomComponent(_text);
    79 
    80                 // Set state
     91        private void init(String[] args, final JComboBox<String> cmboPrepend, final JTextArea utxt) {
    8192                if (args != null && args.length >= 1) {
    8293                       
     
    92103                        }
    93104                       
    94                         if (selectedItem < 0) selectedItem = 0;
    95                         else if (selectedItem >= _combo.getItemCount())
    96                                 selectedItem = _combo.getItemCount() - 1;
     105                        if (selectedItem < 0) {
     106                                selectedItem = 0;
     107                        } else if (selectedItem >= cmboPrepend.getItemCount()) {
     108                                selectedItem = cmboPrepend.getItemCount() - 1;
     109                        }
    97110                       
    98                         _combo.setSelectedIndex(selectedItem);
     111                        cmboPrepend.setSelectedIndex(selectedItem);
    99112                       
    100113                        if (args.length >= 2 && args[1] != null) {
    101                                 _text.setText(args[1]);
     114                                utxt.setText(args[1]);
    102115                        }
    103116                       
     
    109122                               
    110123                        }
    111                 }               
     124                }
    112125        }
    113126
     127        private class PrependManager implements ActionListener {
     128                private JComboBox<String> toConsult;
     129                private JTextArea toAlter;
     130                public PrependManager(final JComboBox<String> toConsult, final JTextArea toAlter) {
     131                        this.toConsult = toConsult;
     132                        this.toAlter = toAlter;
     133                }
     134               
     135                @Override
     136                public void actionPerformed(ActionEvent e) {
     137                        this.toAlter.setText(this.toConsult.getSelectedItem() + " " + this.toAlter.getText());
     138                }
     139        }
     140       
     141        private class ToggleStyle implements ItemListener {
     142                private JTextArea toToggle;
     143                public ToggleStyle(final JTextArea toToggle) {
     144                        this.toToggle = toToggle;                       
     145                }
     146               
     147                @Override
     148                public void itemStateChanged(final ItemEvent e) {
     149                        if(e.getStateChange() == ItemEvent.SELECTED) {
     150                                toToggle.setFont(toToggle.getFont().deriveFont(Font.BOLD));
     151                        } else if (e.getStateChange() == ItemEvent.DESELECTED) {
     152                                toToggle.setFont(toToggle.getFont().deriveFont(Font.PLAIN));
     153                        }
     154                }
     155        }
     156       
     157        private class ToggleBigFont implements ItemListener {
     158                private JTextArea toToggle;
     159
     160                public ToggleBigFont(final JTextArea toToggle) {
     161                        this.toToggle = toToggle;       
     162                }
     163
     164                @Override
     165                public void itemStateChanged(final ItemEvent e) {
     166                        if(e.getStateChange() == ItemEvent.SELECTED) {
     167                                toToggle.setFont(BIG_FONT.deriveFont(toToggle.getFont().getStyle()));
     168                        } else if(e.getStateChange() == ItemEvent.DESELECTED) {
     169                                toToggle.setFont(STANDARD_FONT.deriveFont(toToggle.getFont().getStyle()));
     170                        }
     171                }
     172        }
     173       
    114174        @Override
    115175        protected String[] getArgs() {
    116176               
    117177                return new String[] {
    118                                 Integer.toString(_combo.getSelectedIndex()),
    119                                 _text.getText(),
     178                                Integer.toString(cmboPrepend.getSelectedIndex()),
     179                                utxt.getText(),
    120180                                Integer.toString(((JSplitPane)super._swingComponent).getDividerLocation())
    121181                        };
  • trunk/src/org/expeditee/items/widgets/SampleWidget3.java

    r1160 r1178  
    11package org.expeditee.items.widgets;
     2
     3import java.awt.event.MouseEvent;
     4import java.awt.event.MouseListener;
    25
    36import javax.swing.JButton;
     
    58import javax.swing.JPanel;
    69
     10import org.expeditee.gui.MessageBay;
    711import org.expeditee.items.Text;
    812
    913public class SampleWidget3 extends DataFrameWidget {
    1014       
    11         private final static JPanel panel = new JPanel();
    12         private final static JLabel label = new JLabel("Hello World");
    13         private final static JButton button = new JButton("Hello World");
     15        private final JLabel label = new JLabel("Hello World");
     16        private final JButton button = new JButton("Hello World");
    1417       
    1518        public SampleWidget3(final Text source, final String[] args) {
    16                 super(source, panel, 200, 200, 50, 50);
     19                super(source, new JPanel(), 200, 200, 50, 50);
     20                final JPanel panel = (JPanel)_swingComponent;
    1721                panel.add(label);
    1822                panel.add(button);
     23                button.addMouseListener(new MouseListener() {           
     24                        @Override
     25                        public void mouseReleased(MouseEvent e) {       
     26                        }               
     27                        @Override
     28                        public void mousePressed(MouseEvent e) {       
     29                        }               
     30                        @Override
     31                        public void mouseExited(MouseEvent e) {
     32                        }               
     33                        @Override
     34                        public void mouseEntered(MouseEvent e) {       
     35                        }
     36                       
     37                        @Override
     38                        public void mouseClicked(MouseEvent e) {
     39                                MessageBay.displayMessage("Mouse button clicked: " + e.getButton());
     40                        }
     41                });
    1942        }
    2043
Note: See TracChangeset for help on using the changeset viewer.