Changeset 1178 for trunk/src/org/expeditee/items/widgets/SampleWidget2.java
- Timestamp:
- 09/28/18 10:36:27 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/items/widgets/SampleWidget2.java
r1102 r1178 21 21 import java.awt.FlowLayout; 22 22 import java.awt.Font; 23 import java.awt.event.ActionEvent; 24 import java.awt.event.ActionListener; 25 import java.awt.event.ItemEvent; 26 import java.awt.event.ItemListener; 27 import java.util.Random; 23 28 24 29 import javax.swing.JCheckBox; … … 32 37 import org.expeditee.core.Colour; 33 38 import org.expeditee.gio.swing.SwingConversions; 39 import org.expeditee.gio.swing.SwingFontManager; 34 40 import org.expeditee.items.Text; 35 41 36 42 public 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 41 49 public SampleWidget2(Text source, String[] args) { 42 50 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); 43 86 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 } 50 90 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) { 81 92 if (args != null && args.length >= 1) { 82 93 … … 92 103 } 93 104 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 } 97 110 98 _combo.setSelectedIndex(selectedItem);111 cmboPrepend.setSelectedIndex(selectedItem); 99 112 100 113 if (args.length >= 2 && args[1] != null) { 101 _text.setText(args[1]);114 utxt.setText(args[1]); 102 115 } 103 116 … … 109 122 110 123 } 111 } 124 } 112 125 } 113 126 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 114 174 @Override 115 175 protected String[] getArgs() { 116 176 117 177 return new String[] { 118 Integer.toString( _combo.getSelectedIndex()),119 _text.getText(),178 Integer.toString(cmboPrepend.getSelectedIndex()), 179 utxt.getText(), 120 180 Integer.toString(((JSplitPane)super._swingComponent).getDividerLocation()) 121 181 };
Note:
See TracChangeset
for help on using the changeset viewer.