/plugins/SideKick/tags/release-0-3/sidekick/SideKickOptionPane.java

# · Java · 166 lines · 119 code · 18 blank · 29 comment · 8 complexity · c88cf37d2a7d440046219d0b3c377935 MD5 · raw file

  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 java.awt.event.*;
  26. import java.awt.*;
  27. import java.util.Hashtable;
  28. import org.gjt.sp.jedit.gui.*;
  29. import org.gjt.sp.jedit.*;
  30. //}}}
  31. public class SideKickOptionPane extends AbstractOptionPane
  32. {
  33. //{{{ GeneralOptionPane constructor
  34. public SideKickOptionPane()
  35. {
  36. super("sidekick");
  37. } //}}}
  38. //{{{ _init() method
  39. protected void _init()
  40. {
  41. addComponent(treeFollowsCaret = new JCheckBox(jEdit.getProperty(
  42. "options.sidekick.tree-follows-caret")));
  43. treeFollowsCaret.setSelected(jEdit.getBooleanProperty(
  44. "sidekick-tree.follows-caret"));
  45. treeFollowsCaret.addActionListener(new ActionHandler());
  46. addComponent(bufferChangeParse = new JCheckBox(jEdit.getProperty(
  47. "options.sidekick.buffer-change-parse")));
  48. bufferChangeParse.setSelected(jEdit.getBooleanProperty(
  49. "buffer.sidekick.buffer-change-parse"));
  50. bufferChangeParse.addActionListener(new ActionHandler());
  51. addComponent(keystrokeParse = new JCheckBox(jEdit.getProperty(
  52. "options.sidekick.keystroke-parse")));
  53. keystrokeParse.setSelected(jEdit.getBooleanProperty(
  54. "buffer.sidekick.keystroke-parse"));
  55. keystrokeParse.addActionListener(new ActionHandler());
  56. int autoParseDelayValue;
  57. try
  58. {
  59. autoParseDelayValue = Integer.parseInt(jEdit.getProperty("sidekick.auto-parse-delay"));
  60. }
  61. catch(NumberFormatException nf)
  62. {
  63. autoParseDelayValue = 1500;
  64. }
  65. addComponent(new JLabel(jEdit.getProperty("options.sidekick.auto-parse-delay")));
  66. addComponent(autoParseDelay = new JSlider(500,3000,autoParseDelayValue),
  67. GridBagConstraints.BOTH);
  68. Hashtable labelTable = new Hashtable();
  69. for(int i = 500; i <= 3000; i += 500)
  70. {
  71. labelTable.put(new Integer(i),new JLabel(
  72. String.valueOf((double)i / 1000.0)));
  73. }
  74. autoParseDelay.setLabelTable(labelTable);
  75. autoParseDelay.setPaintLabels(true);
  76. autoParseDelay.setMajorTickSpacing(500);
  77. autoParseDelay.setPaintTicks(true);
  78. autoParseDelay.setEnabled(keystrokeParse.isSelected());
  79. addComponent(completeInstantToggle = new JCheckBox(jEdit.getProperty(
  80. "options.sidekick.complete-instant.toggle")));
  81. completeInstantToggle.setSelected(jEdit.getBooleanProperty("sidekick.complete-instant.toggle"));
  82. completeInstantToggle.addActionListener(new ActionHandler());
  83. addComponent(completeDelayToggle = new JCheckBox(jEdit.getProperty(
  84. "options.sidekick.complete-delay.toggle")));
  85. completeDelayToggle.setSelected(jEdit.getBooleanProperty("sidekick.complete-delay.toggle"));
  86. completeDelayToggle.addActionListener(new ActionHandler());
  87. int completeDelayValue = jEdit.getIntegerProperty("sidekick.complete-delay",500);
  88. addComponent(new JLabel(jEdit.getProperty("options.sidekick.complete-delay")));
  89. addComponent(completeDelay = new JSlider(0,1500,completeDelayValue),
  90. GridBagConstraints.BOTH);
  91. labelTable = new Hashtable();
  92. for(int i = 0; i <= 1500; i += 250)
  93. {
  94. labelTable.put(new Integer(i),new JLabel(
  95. String.valueOf((double)i / 1000.0)));
  96. }
  97. completeDelay.setLabelTable(labelTable);
  98. completeDelay.setPaintLabels(true);
  99. completeDelay.setMajorTickSpacing(250);
  100. completeDelay.setPaintTicks(true);
  101. completeDelay.setEnabled(completeDelayToggle.isSelected());
  102. } //}}}
  103. //{{{ _save() method
  104. protected void _save()
  105. {
  106. jEdit.setBooleanProperty("buffer.sidekick.buffer-change-parse",
  107. bufferChangeParse.isSelected());
  108. jEdit.setBooleanProperty("buffer.sidekick.keystroke-parse",
  109. keystrokeParse.isSelected());
  110. jEdit.setProperty("sidekick.auto-parse-delay",String.valueOf(
  111. autoParseDelay.getValue()));
  112. jEdit.setBooleanProperty("sidekick-tree.follows-caret",
  113. treeFollowsCaret.isSelected());
  114. jEdit.setBooleanProperty("sidekick.complete-instant.toggle",
  115. completeInstantToggle.isSelected());
  116. jEdit.setBooleanProperty("sidekick.complete-delay.toggle",
  117. completeDelayToggle.isSelected());
  118. jEdit.setIntegerProperty("sidekick.complete-delay",
  119. completeDelay.getValue());
  120. } //}}}
  121. //{{{ Private members
  122. private JCheckBox bufferChangeParse;
  123. private JCheckBox keystrokeParse;
  124. private JSlider autoParseDelay;
  125. private JCheckBox treeFollowsCaret;
  126. private JCheckBox completeInstantToggle;
  127. private JCheckBox completeDelayToggle;
  128. private JSlider completeDelay;
  129. //}}}
  130. //{{{ ActionHandler class
  131. class ActionHandler implements ActionListener
  132. {
  133. public void actionPerformed(ActionEvent evt)
  134. {
  135. Object source = evt.getSource();
  136. if(source == keystrokeParse)
  137. {
  138. autoParseDelay.setEnabled(keystrokeParse.isSelected());
  139. if(keystrokeParse.isSelected())
  140. bufferChangeParse.setSelected(true);
  141. }
  142. else if(source == completeDelayToggle)
  143. {
  144. completeDelay.setEnabled(completeDelayToggle.isSelected());
  145. }
  146. }
  147. } //}}}
  148. }