PageRenderTime 39ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/bundles/plugins-trunk/SideKick/sidekick/SideKickOptionPane.java

#
Java | 302 lines | 235 code | 36 blank | 31 comment | 9 complexity | 546a747dcf817ed287ad83bfaa503eff MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. /*
  2. * SideKickOptionPane.java - SideKick options panel
  3. * :tabSize=8:indentSize=8:noTabs=false:
  4. * :folding=explicit:collapseFolds=1:
  5. *
  6. * Copyright (C) 2001, 2003 Slava Pestov
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License
  10. * as published by the Free Software Foundation; either version 2
  11. * of the License, or any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21. */
  22. package sidekick;
  23. //{{{ Imports
  24. import javax.swing.*;
  25. import javax.swing.border.TitledBorder;
  26. import java.awt.event.*;
  27. import java.awt.*;
  28. import java.util.Hashtable;
  29. import org.gjt.sp.jedit.*;
  30. //}}}
  31. public class SideKickOptionPane extends AbstractOptionPane
  32. {
  33. public static final String SHOW_TOOL_BAR = "sidekick.showToolBar";
  34. public static final String SPLIT_COMBO = "sidekick.splitCombo";
  35. public static final String SINGLE_ICON_IN_COMBO = "sidekick.singleIconInCombo";
  36. //{{{ SideKickOptionPane constructor
  37. public SideKickOptionPane()
  38. {
  39. super("sidekick");
  40. } //}}}
  41. //{{{ _init() method
  42. protected void _init()
  43. {
  44. JPanel toolbarPanel = new JPanel(new GridLayout(0, 1));
  45. toolbarPanel.setBorder(new TitledBorder(jEdit.getProperty(
  46. "options.sidekick.toolBar.label")));
  47. addComponent(toolbarPanel);
  48. showToolBar = new JCheckBox(jEdit.getProperty(
  49. "options.sidekick.showToolBar.label"));
  50. showToolBar.setSelected(jEdit.getBooleanProperty(SHOW_TOOL_BAR));
  51. toolbarPanel.add(showToolBar);
  52. splitCombo = new JCheckBox(jEdit.getProperty(
  53. "options.sidekick.splitCombo.label"));
  54. splitCombo.setSelected(jEdit.getBooleanProperty(SPLIT_COMBO));
  55. toolbarPanel.add(splitCombo);
  56. singleIconInCombo = new JCheckBox(jEdit.getProperty(
  57. "options.sidekick.singleIconInCombo.label"));
  58. singleIconInCombo.setSelected(jEdit.getBooleanProperty(SINGLE_ICON_IN_COMBO));
  59. toolbarPanel.add(singleIconInCombo);
  60. addComponent(showToolTips = new JCheckBox(jEdit.getProperty(
  61. "options.sidekick.showToolTips.label")));
  62. showToolTips.setSelected(jEdit.getBooleanProperty(
  63. "sidekick.showToolTips"));
  64. addComponent(showStatusWindow = new JCheckBox(jEdit.getProperty(
  65. "options.sidekick.showStatusWindow.label")));
  66. showStatusWindow.setSelected(jEdit.getBooleanProperty("sidekick.showStatusWindow"));
  67. addComponent(treeFollowsCaret = new JCheckBox(jEdit.getProperty(
  68. "options.sidekick.tree-follows-caret")));
  69. treeFollowsCaret.setSelected(SideKick.isGlobalFollowCaret());
  70. treeFollowsCaret.addActionListener(new ActionHandler());
  71. addComponent(scrollToVisible = new JCheckBox(jEdit.getProperty(
  72. "options.sidekick.scrollToVisible.label")));
  73. scrollToVisible.setSelected(jEdit.getBooleanProperty(
  74. "sidekick.scrollToVisible"));
  75. // checkbox to show/hide filter, indent next 2 checkboxes
  76. addComponent(showFilter =
  77. new JCheckBox(jEdit.getProperty("options.sidekick.showFilter.label", "Show filter text box")));
  78. showFilter.setSelected(jEdit.getBooleanProperty(SideKick.SHOW_FILTER, true));
  79. JPanel filterOptionPanel = new JPanel(new GridLayout(2, 1));
  80. filterOptionPanel.setBorder(BorderFactory.createEmptyBorder(0, 21, 0, 0));
  81. filterOptionPanel.add(persistentFilter =
  82. new JCheckBox(jEdit.getProperty("options.sidekick.persistentFilter.label")));
  83. persistentFilter.setSelected(jEdit.getBooleanProperty("sidekick.persistentFilter"));
  84. filterOptionPanel.add(filterVisibleAssets =
  85. new JCheckBox(jEdit.getProperty("options.sidekick.filter-visible-assets.label")));
  86. filterVisibleAssets.setSelected(jEdit.getBooleanProperty("sidekick.filter-visible-assets"));
  87. addComponent(filterOptionPanel);
  88. showFilter.addActionListener(
  89. new ActionListener() {
  90. public void actionPerformed( ActionEvent ae ) {
  91. persistentFilter.setEnabled(showFilter.isSelected());
  92. filterVisibleAssets.setEnabled(showFilter.isSelected());
  93. }
  94. }
  95. );
  96. addComponent(jEdit.getProperty("options.sidekick.auto-expand-tree-depth"),
  97. autoExpandTreeDepth = new JComboBox());
  98. autoExpandTreeDepth.addActionListener(new ActionHandler());
  99. autoExpandTreeDepth.addItem(jEdit.getProperty("options.sidekick.all", "All"));
  100. for (int i = 0; i <= 10; i++)
  101. autoExpandTreeDepth.addItem(String.valueOf(i));
  102. String depth = String.valueOf(jEdit.getIntegerProperty(
  103. "sidekick-tree.auto-expand-tree-depth", 1));
  104. autoExpandTreeDepth.setSelectedItem(depth);
  105. JPanel parsingSettings = new JPanel();
  106. parsingSettings.setBorder(new TitledBorder("Auto parsing Settings"));
  107. parsingSettings.setLayout(new BorderLayout());
  108. JPanel buttonPanel = new JPanel();
  109. buttonPanel.setLayout(new FlowLayout());
  110. parsingSettings.add(buttonPanel, BorderLayout.NORTH);
  111. buttonPanel.add(bufferChangeParse = new JCheckBox(jEdit.getProperty(
  112. "options.sidekick.buffer-change-parse")));
  113. bufferChangeParse.setSelected(SideKick.isParseOnChange());
  114. bufferChangeParse.addActionListener(new ActionHandler());
  115. buttonPanel.add(bufferSaveParse = new JCheckBox(jEdit.getProperty(
  116. "options.sidekick.buffer-save-parse")));
  117. bufferSaveParse.setSelected(SideKick.isParseOnSave());
  118. bufferSaveParse.addActionListener(new ActionHandler());
  119. buttonPanel.add(keystrokeParse = new JCheckBox(jEdit.getProperty(
  120. "options.sidekick.keystroke-parse")));
  121. keystrokeParse.setSelected(jEdit.getBooleanProperty(
  122. "buffer.sidekick.keystroke-parse"));
  123. keystrokeParse.addActionListener(new ActionHandler());
  124. int autoParseDelayValue;
  125. try
  126. {
  127. autoParseDelayValue = Integer.parseInt(jEdit.getProperty("sidekick.auto-parse-delay"));
  128. }
  129. catch(NumberFormatException nf)
  130. {
  131. autoParseDelayValue = 1500;
  132. }
  133. parsingSettings.add(new JLabel(jEdit.getProperty("options.sidekick.auto-parse-delay")), BorderLayout.CENTER);
  134. parsingSettings.add(autoParseDelay = new JSlider(200,3000,autoParseDelayValue), BorderLayout.SOUTH);
  135. addComponent(parsingSettings);
  136. Hashtable labelTable = new Hashtable();
  137. for(int i = 500; i <= 3000; i += 500)
  138. {
  139. labelTable.put(new Integer(i),new JLabel(
  140. String.valueOf((double)i / 1000.0)));
  141. }
  142. autoParseDelay.setLabelTable(labelTable);
  143. autoParseDelay.setPaintLabels(true);
  144. autoParseDelay.setMajorTickSpacing(500);
  145. autoParseDelay.setPaintTicks(true);
  146. autoParseDelay.setEnabled(keystrokeParse.isSelected());
  147. JPanel codeCompletionsPanel = new JPanel();
  148. codeCompletionsPanel.setBorder(new TitledBorder(jEdit.getProperty(
  149. "options.sidekick.code-completion.label")));
  150. codeCompletionsPanel.setLayout(new BorderLayout());
  151. // addSeparator("options.sidekick.code-completion.label");
  152. JPanel completionsCheckboxes = new JPanel();
  153. completionsCheckboxes.setLayout(new FlowLayout());
  154. completionsCheckboxes.add(completeInstantToggle = new JCheckBox(jEdit.getProperty(
  155. "options.sidekick.complete-instant.toggle")));
  156. completeInstantToggle.setSelected(jEdit.getBooleanProperty("sidekick.complete-instant.toggle"));
  157. completeInstantToggle.addActionListener(new ActionHandler());
  158. completionsCheckboxes.add(completeDelayToggle = new JCheckBox(jEdit.getProperty(
  159. "options.sidekick.complete-delay.toggle")));
  160. completeDelayToggle.setSelected(jEdit.getBooleanProperty("sidekick.complete-delay.toggle"));
  161. completeDelayToggle.addActionListener(new ActionHandler());
  162. codeCompletionsPanel.add(completionsCheckboxes, BorderLayout.NORTH);
  163. int completeDelayValue = jEdit.getIntegerProperty("sidekick.complete-delay",500);
  164. codeCompletionsPanel.add(new JLabel(jEdit.getProperty("options.sidekick.complete-delay")), BorderLayout.CENTER);
  165. codeCompletionsPanel.add(completeDelay = new JSlider(0,1500,completeDelayValue), BorderLayout.SOUTH);
  166. addComponent(codeCompletionsPanel);
  167. autoCompletePopupGetFocus = new JCheckBox(
  168. jEdit.getProperty("options.sidekick.auto-complete-popup-get-focus"),
  169. jEdit.getBooleanProperty("sidekick.auto-complete-popup-get-focus"));
  170. addComponent(autoCompletePopupGetFocus);
  171. labelTable = new Hashtable();
  172. for(int i = 0; i <= 1500; i += 250)
  173. {
  174. labelTable.put(new Integer(i),new JLabel(
  175. String.valueOf((double)i / 1000.0)));
  176. }
  177. completeDelay.setLabelTable(labelTable);
  178. completeDelay.setPaintLabels(true);
  179. completeDelay.setMajorTickSpacing(250);
  180. completeDelay.setPaintTicks(true);
  181. completeDelay.setEnabled(completeDelayToggle.isSelected());
  182. addComponent(jEdit.getProperty("options.sidekick.complete-popup.accept-characters"),
  183. acceptChars = new JTextField(
  184. jEdit.getProperty("sidekick.complete-popup.accept-characters")));
  185. addComponent(jEdit.getProperty("options.sidekick.complete-popup.insert-characters"),
  186. insertChars = new JTextField(
  187. jEdit.getProperty("sidekick.complete-popup.insert-characters")));
  188. } //}}}
  189. //{{{ _save() method
  190. protected void _save()
  191. {
  192. SideKick.setParseOnSave(bufferSaveParse.isSelected());
  193. SideKick.setParseOnChange(bufferChangeParse.isSelected());
  194. jEdit.setBooleanProperty("buffer.sidekick.keystroke-parse",
  195. keystrokeParse.isSelected());
  196. jEdit.setProperty("sidekick.auto-parse-delay",String.valueOf(
  197. autoParseDelay.getValue()));
  198. SideKick.setGlobalFollowCaret(treeFollowsCaret.isSelected());
  199. jEdit.setBooleanProperty(SHOW_TOOL_BAR, showToolBar.isSelected());
  200. jEdit.setBooleanProperty(SPLIT_COMBO, splitCombo.isSelected());
  201. jEdit.setBooleanProperty(SINGLE_ICON_IN_COMBO, singleIconInCombo.isSelected());
  202. jEdit.setBooleanProperty("sidekick.showToolTips", showToolTips.isSelected());
  203. jEdit.setBooleanProperty("sidekick.showStatusWindow", showStatusWindow.isSelected());
  204. jEdit.setBooleanProperty("sidekick.scrollToVisible", scrollToVisible.isSelected());
  205. jEdit.setBooleanProperty(SideKick.SHOW_FILTER, showFilter.isSelected());
  206. jEdit.setBooleanProperty("sidekick.persistentFilter", persistentFilter.isSelected());
  207. jEdit.setBooleanProperty("sidekick.filter-visible-assets", filterVisibleAssets.isSelected());
  208. int depth = 0;
  209. String value = (String)autoExpandTreeDepth.getSelectedItem();
  210. depth = value.equals(jEdit.getProperty("options.sidekick.all", "All")) ? -1 : Integer.parseInt(value);
  211. jEdit.setIntegerProperty("sidekick-tree.auto-expand-tree-depth",
  212. depth);
  213. jEdit.setBooleanProperty("sidekick.complete-instant.toggle",
  214. completeInstantToggle.isSelected());
  215. jEdit.setBooleanProperty("sidekick.complete-delay.toggle",
  216. completeDelayToggle.isSelected());
  217. jEdit.setIntegerProperty("sidekick.complete-delay",
  218. completeDelay.getValue());
  219. jEdit.setBooleanProperty("sidekick.auto-complete-popup-get-focus",
  220. autoCompletePopupGetFocus.isSelected());
  221. jEdit.setProperty("sidekick.complete-popup.accept-characters",acceptChars.getText());
  222. jEdit.setProperty("sidekick.complete-popup.insert-characters",insertChars.getText());
  223. } //}}}
  224. //{{{ Private members
  225. private JCheckBox bufferChangeParse;
  226. private JCheckBox bufferSaveParse;
  227. private JCheckBox keystrokeParse;
  228. private JSlider autoParseDelay;
  229. private JCheckBox treeFollowsCaret;
  230. private JCheckBox scrollToVisible;
  231. private JComboBox autoExpandTreeDepth;
  232. private JCheckBox completeInstantToggle;
  233. private JCheckBox completeDelayToggle;
  234. private JSlider completeDelay;
  235. private JCheckBox autoCompletePopupGetFocus;
  236. private JCheckBox showToolBar;
  237. private JCheckBox splitCombo;
  238. private JCheckBox singleIconInCombo;
  239. private JCheckBox showToolTips;
  240. private JCheckBox showStatusWindow;
  241. private JTextField acceptChars;
  242. private JTextField insertChars;
  243. private JCheckBox persistentFilter;
  244. private JCheckBox showFilter;
  245. private JCheckBox filterVisibleAssets;
  246. //}}}
  247. //{{{ ActionHandler class
  248. class ActionHandler implements ActionListener
  249. {
  250. public void actionPerformed(ActionEvent evt)
  251. {
  252. Object source = evt.getSource();
  253. if(source == keystrokeParse)
  254. {
  255. autoParseDelay.setEnabled(keystrokeParse.isSelected());
  256. if(keystrokeParse.isSelected())
  257. bufferChangeParse.setSelected(true);
  258. bufferSaveParse.setSelected(true);
  259. }
  260. else if(source == completeDelayToggle)
  261. {
  262. completeDelay.setEnabled(completeDelayToggle.isSelected());
  263. }
  264. }
  265. } //}}}
  266. }