PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/fstmerge/examples/jEdit/rev16588-17060/left-branch-17060/org/gjt/sp/jedit/options/StatusBarOptionPane.java

https://github.com/RoDaniel/featurehouse
Java | 470 lines | 367 code | 103 blank | 0 comment | 51 complexity | 92fe90f68ba431eb274ee5b60c1cae66 MD5 | raw file
  1. package org.gjt.sp.jedit.options;
  2. import javax.swing.border.*;
  3. import javax.swing.event.*;
  4. import javax.swing.*;
  5. import java.awt.event.*;
  6. import java.awt.*;
  7. import java.util.*;
  8. import org.gjt.sp.jedit.gui.*;
  9. import org.gjt.sp.jedit.*;
  10. public class StatusBarOptionPane extends AbstractOptionPane
  11. {
  12. public StatusBarOptionPane()
  13. {
  14. super("status");
  15. }
  16. @Override
  17. protected void _init()
  18. {
  19. setLayout(new BorderLayout());
  20. JPanel panel = new JPanel(new GridLayout(2,1));
  21. showStatusbar = new JCheckBox(jEdit.getProperty(
  22. "options.status.visible"));
  23. showStatusbar.setSelected(jEdit.getBooleanProperty("view.status.visible"));
  24. panel.add(showStatusbar);
  25. showStatusbarPlain = new JCheckBox(jEdit.getProperty(
  26. "options.status.plainview.visible"));
  27. showStatusbarPlain.setSelected(jEdit.getBooleanProperty("view.status.plainview.visible"));
  28. panel.add(showStatusbarPlain);
  29. panel.add(new JLabel(jEdit.getProperty(
  30. "options.status.caption")));
  31. add(panel, BorderLayout.NORTH);
  32. AbstractOptionPane optionsPanel = new AbstractOptionPane("Status Options");
  33. optionsPanel.addComponent(jEdit.getProperty("options.status.foreground"),
  34. foregroundColor = new ColorWellButton(
  35. jEdit.getColorProperty("view.status.foreground")),
  36. GridBagConstraints.VERTICAL);
  37. optionsPanel.addComponent(jEdit.getProperty("options.status.background"),
  38. backgroundColor = new ColorWellButton(
  39. jEdit.getColorProperty("view.status.background")),
  40. GridBagConstraints.VERTICAL);
  41. optionsPanel.addComponent(jEdit.getProperty("options.status.memory.foreground"),
  42. memForegroundColor = new ColorWellButton(
  43. jEdit.getColorProperty("view.status.memory.foreground")),
  44. GridBagConstraints.VERTICAL);
  45. optionsPanel.addComponent(jEdit.getProperty("options.status.memory.background"),
  46. memBackgroundColor = new ColorWellButton(
  47. jEdit.getColorProperty("view.status.memory.background")),
  48. GridBagConstraints.VERTICAL);
  49. optionsPanel.addSeparator();
  50. optionsPanel.addComponent(new JLabel(jEdit.getProperty("options.status.caret.title", "Caret position display options:")));
  51. showCaretLineNumber = new JCheckBox(jEdit.getProperty("options.status.caret.linenumber", "Show caret line number"),
  52. jEdit.getBooleanProperty("view.status.show-caret-linenumber", true));
  53. showCaretLineNumber.setName("showCaretLineNumber");
  54. showCaretDot = new JCheckBox(jEdit.getProperty("options.status.caret.dot", "Show caret offset from start of line"),
  55. jEdit.getBooleanProperty("view.status.show-caret-dot", true));
  56. showCaretDot.setName("showCaretDot");
  57. showCaretVirtual = new JCheckBox(jEdit.getProperty("options.status.caret.virtual", "Show caret virtual offset from start of line"),
  58. jEdit.getBooleanProperty("view.status.show-caret-virtual", true));
  59. showCaretVirtual.setName("showCaretVirtual");
  60. showCaretOffset = new JCheckBox(jEdit.getProperty("options.status.caret.offset", "Show caret offset from start of file"),
  61. jEdit.getBooleanProperty("view.status.show-caret-offset", true));
  62. showCaretOffset.setName("showCaretOffset");
  63. showCaretBufferLength = new JCheckBox(jEdit.getProperty("options.status.caret.bufferlength", "Show length of file"),
  64. jEdit.getBooleanProperty("view.status.show-caret-bufferlength", true));
  65. showCaretBufferLength.setName("showCaretBufferLength");
  66. optionsPanel.addComponent(showCaretLineNumber);
  67. optionsPanel.addComponent(showCaretDot);
  68. optionsPanel.addComponent(showCaretVirtual);
  69. optionsPanel.addComponent(showCaretOffset);
  70. optionsPanel.addComponent(showCaretBufferLength);
  71. String statusbar = jEdit.getProperty("view.status");
  72. StringTokenizer st = new StringTokenizer(statusbar);
  73. listModel = new DefaultListModel();
  74. while (st.hasMoreTokens())
  75. {
  76. String token = st.nextToken();
  77. listModel.addElement(token);
  78. }
  79. list = new JList(listModel);
  80. list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  81. list.addListSelectionListener(new ListHandler());
  82. JPanel widgetsPanel = new JPanel(new BorderLayout());
  83. widgetsPanel.add(new JScrollPane(list), BorderLayout.CENTER);
  84. JPanel buttons = new JPanel();
  85. buttons.setBorder(new EmptyBorder(3,0,0,0));
  86. buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS));
  87. ActionHandler actionHandler = new ActionHandler();
  88. add = new RolloverButton(GUIUtilities.loadIcon("Plus.png"));
  89. add.setToolTipText(jEdit.getProperty("options.status.add"));
  90. add.addActionListener(actionHandler);
  91. buttons.add(add);
  92. buttons.add(Box.createHorizontalStrut(6));
  93. remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png"));
  94. remove.setToolTipText(jEdit.getProperty("options.status.remove"));
  95. remove.addActionListener(actionHandler);
  96. buttons.add(remove);
  97. buttons.add(Box.createHorizontalStrut(6));
  98. moveUp = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png"));
  99. moveUp.setToolTipText(jEdit.getProperty("options.status.moveUp"));
  100. moveUp.addActionListener(actionHandler);
  101. buttons.add(moveUp);
  102. buttons.add(Box.createHorizontalStrut(6));
  103. moveDown = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png"));
  104. moveDown.setToolTipText(jEdit.getProperty("options.status.moveDown"));
  105. moveDown.addActionListener(actionHandler);
  106. buttons.add(moveDown);
  107. buttons.add(Box.createHorizontalStrut(6));
  108. edit = new RolloverButton(GUIUtilities.loadIcon("ButtonProperties.png"));
  109. edit.setToolTipText(jEdit.getProperty("options.status.edit"));
  110. edit.addActionListener(actionHandler);
  111. buttons.add(edit);
  112. buttons.add(Box.createGlue());
  113. updateButtons();
  114. widgetsPanel.add(buttons, BorderLayout.SOUTH);
  115. JTabbedPane tabs = new JTabbedPane();
  116. tabs.addTab("Options",optionsPanel);
  117. tabs.add("Widgets", widgetsPanel);
  118. add(tabs, BorderLayout.CENTER);
  119. }
  120. @Override
  121. protected void _save()
  122. {
  123. jEdit.setColorProperty("view.status.foreground",foregroundColor
  124. .getSelectedColor());
  125. jEdit.setColorProperty("view.status.background",backgroundColor
  126. .getSelectedColor());
  127. jEdit.setColorProperty("view.status.memory.foreground",memForegroundColor
  128. .getSelectedColor());
  129. jEdit.setColorProperty("view.status.memory.background",memBackgroundColor
  130. .getSelectedColor());
  131. jEdit.setBooleanProperty("view.status.visible",showStatusbar
  132. .isSelected());
  133. jEdit.setBooleanProperty("view.status.plainview.visible",showStatusbarPlain
  134. .isSelected());
  135. StringBuilder buf = new StringBuilder();
  136. for(int i = 0; i < listModel.getSize(); i++)
  137. {
  138. if(i != 0)
  139. buf.append(' ');
  140. String widgetName = (String) listModel.elementAt(i);
  141. buf.append(widgetName);
  142. }
  143. jEdit.setProperty("view.status",buf.toString());
  144. jEdit.setBooleanProperty("view.status.show-caret-linenumber", showCaretLineNumber.isSelected());
  145. jEdit.setBooleanProperty("view.status.show-caret-dot", showCaretDot.isSelected());
  146. jEdit.setBooleanProperty("view.status.show-caret-virtual", showCaretVirtual.isSelected());
  147. jEdit.setBooleanProperty("view.status.show-caret-offset", showCaretOffset.isSelected());
  148. jEdit.setBooleanProperty("view.status.show-caret-bufferlength", showCaretBufferLength.isSelected());
  149. }
  150. private ColorWellButton foregroundColor;
  151. private ColorWellButton backgroundColor;
  152. private ColorWellButton memForegroundColor;
  153. private ColorWellButton memBackgroundColor;
  154. private JCheckBox showStatusbar;
  155. private JCheckBox showStatusbarPlain;
  156. private DefaultListModel listModel;
  157. private JList list;
  158. private RolloverButton add;
  159. private RolloverButton remove;
  160. private RolloverButton moveUp, moveDown;
  161. private RolloverButton edit;
  162. private JCheckBox showCaretLineNumber;
  163. private JCheckBox showCaretDot;
  164. private JCheckBox showCaretVirtual;
  165. private JCheckBox showCaretOffset;
  166. private JCheckBox showCaretBufferLength;
  167. private void updateButtons()
  168. {
  169. int index = list.getSelectedIndex();
  170. remove.setEnabled(index != -1 && listModel.getSize() != 0);
  171. moveUp.setEnabled(index > 0);
  172. moveDown.setEnabled(index != -1 && index != listModel.getSize() - 1);
  173. edit.setEnabled(index != -1);
  174. }
  175. private class ActionHandler implements ActionListener
  176. {
  177. public void actionPerformed(ActionEvent evt)
  178. {
  179. Object source = evt.getSource();
  180. if(source == add)
  181. {
  182. String value = selectWidget();
  183. if (value == null)
  184. return;
  185. int index = list.getSelectedIndex();
  186. if(index == -1)
  187. index = listModel.getSize();
  188. else
  189. index++;
  190. listModel.insertElementAt(value,index);
  191. list.setSelectedIndex(index);
  192. list.ensureIndexIsVisible(index);
  193. }
  194. else if(source == remove)
  195. {
  196. int index = list.getSelectedIndex();
  197. listModel.removeElementAt(index);
  198. if(listModel.getSize() != 0)
  199. {
  200. if(listModel.getSize() == index)
  201. list.setSelectedIndex(index-1);
  202. else
  203. list.setSelectedIndex(index);
  204. }
  205. updateButtons();
  206. }
  207. else if(source == moveUp)
  208. {
  209. int index = list.getSelectedIndex();
  210. Object selected = list.getSelectedValue();
  211. listModel.removeElementAt(index);
  212. listModel.insertElementAt(selected,index-1);
  213. list.setSelectedIndex(index-1);
  214. list.ensureIndexIsVisible(index-1);
  215. }
  216. else if(source == moveDown)
  217. {
  218. int index = list.getSelectedIndex();
  219. Object selected = list.getSelectedValue();
  220. listModel.removeElementAt(index);
  221. listModel.insertElementAt(selected,index+1);
  222. list.setSelectedIndex(index+1);
  223. list.ensureIndexIsVisible(index+1);
  224. }
  225. else if(source == edit)
  226. {
  227. String value = selectWidget();
  228. if (value == null)
  229. return;
  230. int index = list.getSelectedIndex();
  231. listModel.insertElementAt(value,index);
  232. list.setSelectedIndex(index);
  233. list.ensureIndexIsVisible(index);
  234. }
  235. }
  236. private String selectWidget()
  237. {
  238. WidgetSelectionDialog dialog = new WidgetSelectionDialog(StatusBarOptionPane.this);
  239. String value = dialog.getValue();
  240. if (value != null && value.length() == 0)
  241. value = null;
  242. return value;
  243. }
  244. }
  245. private class ListHandler implements ListSelectionListener
  246. {
  247. public void valueChanged(ListSelectionEvent evt)
  248. {
  249. updateButtons();
  250. }
  251. }
  252. private class WidgetSelectionDialog extends EnhancedDialog
  253. {
  254. private JButton ok;
  255. private JButton cancel;
  256. private JTextField labelField;
  257. private JLabel labelLabel;
  258. private JRadioButton labelRadio;
  259. private JComboBox widgetCombo;
  260. private JLabel widgetLabel;
  261. private JRadioButton widgetRadio;
  262. private String value;
  263. WidgetSelectionDialog(Component comp)
  264. {
  265. super(GUIUtilities.getParentDialog(comp),
  266. jEdit.getProperty("options.status.edit.title"),
  267. true);
  268. ButtonGroup buttonGroup = new ButtonGroup();
  269. labelRadio = new JRadioButton(jEdit.getProperty("options.status.edit.labelRadioButton"));
  270. widgetRadio = new JRadioButton(jEdit.getProperty("options.status.edit.widgetRadioButton"));
  271. buttonGroup.add(labelRadio);
  272. buttonGroup.add(widgetRadio);
  273. labelLabel = new JLabel(jEdit.getProperty("options.status.edit.labelLabel"));
  274. labelField = new JTextField();
  275. widgetLabel = new JLabel(jEdit.getProperty("options.status.edit.widgetLabel"));
  276. widgetCombo = new JComboBox(ServiceManager.getServiceNames("org.gjt.sp.jedit.gui.statusbar.StatusWidget"));
  277. ActionHandler actionHandler = new ActionHandler();
  278. labelRadio.addActionListener(actionHandler);
  279. widgetRadio.addActionListener(actionHandler);
  280. JPanel southPanel = new JPanel();
  281. southPanel.setLayout(new BoxLayout(southPanel,BoxLayout.X_AXIS));
  282. southPanel.setBorder(new EmptyBorder(12,0,0,0));
  283. southPanel.add(Box.createGlue());
  284. ok = new JButton(jEdit.getProperty("common.ok"));
  285. ok.addActionListener(actionHandler);
  286. getRootPane().setDefaultButton(ok);
  287. southPanel.add(ok);
  288. southPanel.add(Box.createHorizontalStrut(6));
  289. cancel = new JButton(jEdit.getProperty("common.cancel"));
  290. cancel.addActionListener(actionHandler);
  291. southPanel.add(cancel);
  292. southPanel.add(Box.createGlue());
  293. labelField.setEnabled(false);
  294. widgetRadio.setSelected(true);
  295. JPanel content = new JPanel(new BorderLayout());
  296. content.setBorder(new EmptyBorder(12,12,12,12));
  297. setContentPane(content);
  298. JPanel center = new JPanel();
  299. center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS));
  300. center.add(labelRadio);
  301. JPanel p = new JPanel(new BorderLayout());
  302. p.add(labelLabel, BorderLayout.WEST);
  303. p.add(labelField);
  304. center.add(p);
  305. center.add(widgetRadio);
  306. p = new JPanel(new BorderLayout());
  307. p.add(widgetLabel, BorderLayout.WEST);
  308. p.add(widgetCombo);
  309. center.add(p);
  310. getContentPane().add(center, BorderLayout.CENTER);
  311. getContentPane().add(southPanel, BorderLayout.SOUTH);
  312. pack();
  313. setLocationRelativeTo(GUIUtilities.getParentDialog(comp));
  314. setVisible(true);
  315. }
  316. @Override
  317. public void ok()
  318. {
  319. if (widgetRadio.isSelected())
  320. {
  321. value = (String) widgetCombo.getSelectedItem();
  322. }
  323. else
  324. {
  325. value = labelField.getText().trim();
  326. }
  327. dispose();
  328. }
  329. @Override
  330. public void cancel()
  331. {
  332. value = null;
  333. dispose();
  334. }
  335. public String getValue()
  336. {
  337. return value;
  338. }
  339. private class ActionHandler implements ActionListener
  340. {
  341. public void actionPerformed(ActionEvent evt)
  342. {
  343. Object source = evt.getSource();
  344. if (source == ok)
  345. {
  346. ok();
  347. }
  348. else if (source == cancel)
  349. {
  350. cancel();
  351. }
  352. else if (source == labelRadio)
  353. {
  354. labelField.setEnabled(true);
  355. widgetCombo.setEnabled(false);
  356. validate();
  357. }
  358. else if (source == widgetRadio)
  359. {
  360. labelField.setEnabled(false);
  361. widgetCombo.setEnabled(true);
  362. validate();
  363. }
  364. }
  365. }
  366. }
  367. }