Revision: 7617
http://svn.sourceforge.net/jedit/?rev=7617&view=rev
Author: ezust
Date: 2006-10-18 06:47:24 -0700 (Wed, 18 Oct 2006)
Log Message:
-----------
Added Mode-specific options.
Modified Paths:
--------------
plugins/SideKick/trunk/SideKick.props
plugins/SideKick/trunk/build.xml
plugins/SideKick/trunk/sidekick/SideKick.java
plugins/SideKick/trunk/sidekick/SideKickActions.java
plugins/SideKick/trunk/sidekick/SideKickOptionPane.java
plugins/SideKick/trunk/sidekick/SideKickPlugin.java
plugins/SideKick/trunk/sidekick/SideKickTree.java
plugins/SideKick/trunk/sidekick/enhanced/SourceTree.java
plugins/SideKick/trunk/users-guide.xml
Added Paths:
-----------
plugins/SideKick/trunk/sidekick/ModeOptionsPane.java
plugins/SideKick/trunk/sidekick/SideKickPropertiesDialog.java
plugins/SideKick/trunk/sidekick/SideKickPropertiesPane.java
Modified: plugins/SideKick/trunk/SideKick.props
===================================================================
--- plugins/SideKick/trunk/SideKick.props 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/SideKick.props 2006-10-18 13:47:24 UTC (rev 7617)
@@ -3,10 +3,10 @@
plugin.sidekick.SideKickPlugin.name=SideKick
plugin.sidekick.SideKickPlugin.author=Slava Pestov,Dale Anson,Martin Raspe,Alan Ezust
-plugin.sidekick.SideKickPlugin.version=0.6.8
+plugin.sidekick.SideKickPlugin.version=0.7
plugin.sidekick.SideKickPlugin.docs=index.html
-plugin.sidekick.SideKickPlugin.depend.0=jedit 04.03.05.00
-plugin.sidekick.SideKickPlugin.depend.1=jdk 1.4
+plugin.sidekick.SideKickPlugin.depend.0=jedit 04.03.08.00
+plugin.sidekick.SideKickPlugin.depend.1=jdk 1.5
plugin.sidekick.SideKickPlugin.depend.2=plugin errorlist.ErrorListPlugin 1.4
plugin.sidekick.SideKickPlugin.description=The SideKick plugin provides a dockable window in which other plugins can display buffer structure in a tree view.
@@ -51,6 +51,8 @@
plugin.sidekick.SideKickPlugin.option-group=sidekick sidekick.parser
options.sidekick.label=General
+options.sidekick.mode.label=General
+options.sidekick.settings.title=SideKick Settings
options.sidekick.code=new sidekick.SideKickOptionPane();
options.sidekick.parser.label=Parsers
options.sidekick.parser.code=new sidekick.ParserOptionPane();
Modified: plugins/SideKick/trunk/build.xml
===================================================================
--- plugins/SideKick/trunk/build.xml 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/build.xml 2006-10-18 13:47:24 UTC (rev 7617)
@@ -13,8 +13,8 @@
<property name="user-doc.xml" location = "users-guide.xml"/>
<property name="plugin.dependencies" value="ErrorList" />
<property name="dist.target" value="dist.complete" />
- <property name="compiler.source" value="1.4" />
- <property name="compiler.target" value="1.4" />
+ <property name="compiler.source" value="1.5" />
+ <property name="compiler.target" value="1.5" />
<import file="${build.support}/plugin-build.xml" />
Added: plugins/SideKick/trunk/sidekick/ModeOptionsPane.java
===================================================================
--- plugins/SideKick/trunk/sidekick/ModeOptionsPane.java (rev 0)
+++ plugins/SideKick/trunk/sidekick/ModeOptionsPane.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -0,0 +1,76 @@
+package sidekick;
+
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+
+import org.gjt.sp.jedit.jEdit;
+
+
+
+/**
+ *
+ * Mode-Specific options for SideKick
+ *
+ * @author ezust
+ *
+ */
+public class ModeOptionsPane extends SideKickPropertiesPane
+{
+ JCheckBox showStatusWindow;
+ JCheckBox treeFollowsCaret;
+ JComboBox autoExpandTreeDepth;
+ /**
+ *
+ * @param view the current view
+ * @param buffer the current buffer
+ */
+ ModeOptionsPane()
+ {
+ super("sidekick.mode");
+ }
+
+ protected void _init() {
+
+ showStatusWindow = new JCheckBox(jEdit.getProperty("options." + SideKick.SHOW_STATUS));
+ addComponent(showStatusWindow);
+
+ treeFollowsCaret = new JCheckBox(jEdit.getProperty("options.sidekick.tree-follows-caret"));
+ addComponent(treeFollowsCaret);
+
+ autoExpandTreeDepth = new JComboBox();
+ addComponent(jEdit.getProperty("options.sidekick.auto-expand-tree-depth"), autoExpandTreeDepth);
+// autoExpandTreeDepth.addActionListener(new ActionHandler());
+ autoExpandTreeDepth.addItem(SideKickPropertiesDialog.ALL);
+ for (int i = 0; i <= 10; i++)
+ autoExpandTreeDepth.addItem(String.valueOf(i));
+ addComponent(autoExpandTreeDepth);
+ _load();
+ }
+
+ protected void _load()
+ {
+
+ boolean tfc = getBooleanProperty(SideKick.FOLLOW_CARET);
+ treeFollowsCaret.setSelected(tfc);
+ showStatusWindow.setSelected(getBooleanProperty(SideKick.SHOW_STATUS));
+ int item = getIntegerProperty(SideKick.AUTO_EXPAND_DEPTH, 1) + 1;
+ autoExpandTreeDepth.setSelectedIndex(item);
+ }
+
+ protected void _save()
+ {
+ setBooleanProperty(SideKick.FOLLOW_CARET, treeFollowsCaret.isSelected());
+ setBooleanProperty(SideKick.SHOW_STATUS, showStatusWindow.isSelected());
+ String value = (String)autoExpandTreeDepth.getSelectedItem();
+ String depth = value.equals(SideKickPropertiesDialog.ALL) ? "-1" : value;
+ setProperty(SideKick.AUTO_EXPAND_DEPTH, depth);
+ }
+
+ protected void _reset()
+ {
+ clearModeProperty(SideKick.FOLLOW_CARET);
+ clearModeProperty(SideKick.AUTO_EXPAND_DEPTH);
+ clearModeProperty(SideKick.SHOW_STATUS);
+ }
+
+}
Property changes on: plugins/SideKick/trunk/sidekick/ModeOptionsPane.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: plugins/SideKick/trunk/sidekick/SideKick.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKick.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/SideKick.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -66,16 +66,19 @@
private boolean showParsingMessage;
+
private int delay;
private Timer keystrokeTimer;
// private BufferChangeHandler bufferHandler;
private BufferChangeListener bufferListener;
private boolean addedBufferChangeHandler;
+ //}}}
public static final String BUFFER_CHANGE = "sidekick.buffer-change-parse";
- //}}}
public static final String BUFFER_SAVE = "sidekick.buffer-save-parse";
public static final String FOLLOW_CARET = "sidekick-tree.follows-caret";
+ public static final String AUTO_EXPAND_DEPTH = "sidekick-tree.auto-expand-tree-depth";
+ public static final String SHOW_STATUS= "sidekick.showStatusWindow.label";
public static boolean isFollowCaret() {
return jEdit.getBooleanProperty(SideKick.FOLLOW_CARET) ;
@@ -83,22 +86,23 @@
static public void setFollowCaret(boolean fc) {
jEdit.setBooleanProperty( SideKick.FOLLOW_CARET, fc);
}
+
+ public static void setParseOnSave(boolean val) {
+ jEdit.setBooleanProperty(BUFFER_SAVE, val);
+ }
- static public boolean isParseOnChange() {
- return jEdit.getBooleanProperty(SideKick.BUFFER_CHANGE );
+ public static void setParseOnChange(boolean val) {
+ jEdit.setBooleanProperty(BUFFER_CHANGE, val);
}
- static public void setParseOnChange(boolean poc) {
- jEdit.setBooleanProperty(SideKick.BUFFER_CHANGE, poc );
+
+ public static boolean isParseOnSave() {
+ return jEdit.getBooleanProperty(BUFFER_SAVE);
}
-
- static public boolean isParseOnSave() {
- return jEdit.getBooleanProperty(SideKick.BUFFER_SAVE);
+
+ public static boolean isParseOnChange() {
+ return jEdit.getBooleanProperty(BUFFER_CHANGE);
}
- static public void setParseOnSave(boolean poc) {
- jEdit.setBooleanProperty(SideKick.BUFFER_SAVE, poc );
- }
-
-
+
//{{{ SideKick constructor
SideKick(View view)
{
Modified: plugins/SideKick/trunk/sidekick/SideKickActions.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickActions.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/SideKickActions.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -24,15 +24,23 @@
//{{{ Import statements
import javax.swing.tree.*;
-import javax.swing.SwingUtilities;
import javax.swing.Timer;
import java.awt.event.*;
import org.gjt.sp.jedit.textarea.*;
import org.gjt.sp.jedit.*;
+
//}}}
public class SideKickActions
{
+ //{{{ Private members
+ private static boolean completeDelay;
+ private static boolean completeInstant;
+ private static int delay;
+ private static int caretWhenCompleteKeyPressed;
+ private static Timer timer;
+ private static SideKickCompletionPopup popup;
+ //}}}
//{{{ keyComplete() method
public static void keyComplete(View view)
{
@@ -340,12 +348,43 @@
timer.setInitialDelay(delay);
} //}}}
- //{{{ Private members
- private static boolean completeDelay;
- private static boolean completeInstant;
- private static int delay;
- private static int caretWhenCompleteKeyPressed;
- private static Timer timer;
- private static SideKickCompletionPopup popup;
- //}}}
+ abstract public static class SideKickAction extends EditAction
+ {
+ protected String parserName;
+ protected SideKickAction(String actionName, String parserName)
+ {
+ super(actionName, new Object[] {parserName} );
+ this.parserName = parserName;
+ }
+
+ }// }}}
+
+ // {{{ ToggleParser class
+ /** An action which will always activate the SideKick parser,
+ * alternately selecting the default parser, and then the
+ * selected one, allowing you to toggle between say, Outline
+ * and Java parsers, XML and HTML, or Python and Jython parsers.
+ */
+ public static class ToggleParser extends SideKickAction
+ {
+ public String getLabel()
+ {
+ return parserName + " (Toggle)";
+ }
+ public ToggleParser(String parserName)
+ {
+ super("sidekick.parser." + parserName + "-toggle", parserName);
+ this.parserName =parserName;
+ }
+ public String getCode() {
+ return "new sidekick.SideKickActions.ToggleAction(\"" + parserName + "\").invoke(view)";
+ }
+ public void invoke(View view)
+ {
+
+
+ }
+ }
+
+
}
Modified: plugins/SideKick/trunk/sidekick/SideKickOptionPane.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickOptionPane.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/SideKickOptionPane.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -49,11 +49,10 @@
addComponent(showToolTips = new JCheckBox(jEdit.getProperty(
"options.sidekick.showToolTips.label")));
showToolTips.setSelected(jEdit.getBooleanProperty(
- "options.sidekick.showToolTips"));
+ "sidekick.showToolTips"));
addComponent(showStatusWindow = new JCheckBox(jEdit.getProperty(
"options.sidekick.showStatusWindow.label")));
- showStatusWindow.setSelected(jEdit.getBooleanProperty(
- "options.sidekick.showStatusWindow"));
+ showStatusWindow.setSelected(jEdit.getBooleanProperty("sidekick.showStatusWindow"));
addComponent(treeFollowsCaret = new JCheckBox(jEdit.getProperty(
"options.sidekick.tree-follows-caret")));
treeFollowsCaret.setSelected(SideKick.isFollowCaret());
@@ -63,7 +62,7 @@
addComponent(scrollToVisible = new JCheckBox(jEdit.getProperty(
"options.sidekick.scrollToVisible.label")));
scrollToVisible.setSelected(jEdit.getBooleanProperty(
- "options.sidekick.scrollToVisible"));
+ "sidekick.scrollToVisible"));
addComponent(jEdit.getProperty("options.sidekick.auto-expand-tree-depth"),
autoExpandTreeDepth = new JComboBox());
@@ -187,9 +186,9 @@
jEdit.setProperty("sidekick.auto-parse-delay",String.valueOf(
autoParseDelay.getValue()));
SideKick.setFollowCaret(treeFollowsCaret.isSelected());
- jEdit.setBooleanProperty("options.sidekick.showToolTips", showToolTips.isSelected());
- jEdit.setBooleanProperty("options.sidekick.showStatusWindow", showStatusWindow.isSelected());
- jEdit.setBooleanProperty("options.sidekick.scrollToVisible", scrollToVisible.isSelected());
+ jEdit.setBooleanProperty("sidekick.showToolTips", showToolTips.isSelected());
+ jEdit.setBooleanProperty("sidekick.showStatusWindow", showStatusWindow.isSelected());
+ jEdit.setBooleanProperty("sidekick.scrollToVisible", scrollToVisible.isSelected());
int depth = 0;
String value = (String)autoExpandTreeDepth.getSelectedItem();
depth = value.equals("All") ? -1 : Integer.parseInt(value);
Modified: plugins/SideKick/trunk/sidekick/SideKickPlugin.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickPlugin.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/SideKickPlugin.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -25,7 +25,6 @@
//{{{ Imports
import java.util.*;
-import org.gjt.sp.jedit.gui.DockableWindowManager;
import org.gjt.sp.jedit.msg.*;
import org.gjt.sp.jedit.textarea.*;
import org.gjt.sp.jedit.*;
@@ -120,27 +119,25 @@
} //}}}
- //{{{ registerParser() method
- /**
- * @deprecated Write a <code>services.xml</code> file instead.
- * @see SideKickParser
- */
- public static void registerParser(SideKickParser parser)
- {
- parsers.put(parser.getName(),parser);
- } //}}}
+ public static SideKickParser getParserForMode(Mode m) {
+ String modeStr = m.getName();
+ String propName = "mode." + modeStr + "." + SideKickPlugin.PARSER_PROPERTY;
+ String parserName = jEdit.getProperty(propName);
+
+ if (parserName == null) {
+ SideKick sidekick = (SideKick)sidekicks.get(jEdit.getActiveView());
+ return sidekick.getParser();
+ }
+ SideKickParser parser = (SideKickParser) ServiceManager.getService(
+ SideKickParser.SERVICE, parserName);
+ return parser;
+ }
+
- //{{{ unregisterParser() method
+ //{{{ getParser() method
/**
- * @deprecated Write a <code>services.xml</code> file instead.
- * @see SideKickParser
+ * @param name - the name of the parser, as defined in services.xml
*/
- public static void unregisterParser(SideKickParser parser)
- {
- parsers.remove(parser.getName());
- } //}}}
-
- //{{{ getParser() method
public static SideKickParser getParser(String name)
{
SideKickParser parser = (SideKickParser)ServiceManager
Added: plugins/SideKick/trunk/sidekick/SideKickPropertiesDialog.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickPropertiesDialog.java (rev 0)
+++ plugins/SideKick/trunk/sidekick/SideKickPropertiesDialog.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -0,0 +1,187 @@
+package sidekick;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gjt.sp.jedit.BeanShell;
+import org.gjt.sp.jedit.MiscUtilities;
+import org.gjt.sp.jedit.Mode;
+import org.gjt.sp.jedit.OptionGroup;
+import org.gjt.sp.jedit.OptionPane;
+import org.gjt.sp.jedit.ServiceManager;
+import org.gjt.sp.jedit.View;
+import org.gjt.sp.jedit.jEdit;
+import org.gjt.sp.jedit.gui.OptionsDialog;
+import org.gjt.sp.util.Log;
+import org.gjt.sp.util.StringList;
+
+/**
+ * An options dialog which has mode-settings like the EditingOptionPane.
+ *
+ * It creates an OptionPane for each SideKick parser that defines the proper property,
+ * and is currently loaded.
+ *
+ * Plugins can add an OptionPane to SideKick's options by defining properties of this form
+ *
+ * options.sidekick.SERVICENAME.code = new DerivedSideKickPropertiesPane(view, buffer, name);
+ *
+ * You can add regular OptionPanes but for OptionPanes which are derived from
+ * SideKickPropertiesPane, these optionpanes will be "mode aware" and reflect the
+ * values specific to the mode selected in the mode combobox of the SideKickPropertiesDialog.
+ *
+ * @author ezust
+ *
+ */
+
+public class SideKickPropertiesDialog extends OptionsDialog
+{
+ public static final String ALL="ALL";
+ ModeOptionsPane mop;
+ OptionTreeModel paneTreeModel;
+ StringList modes;
+ JComboBox modeCombo;
+ JButton useDefaultsCheck;
+
+ public SideKickPropertiesDialog(View v) {
+ super(v, "options.sidekick.settings", "sidekick.mode");
+ }
+
+ public String getMode() {
+ return modeCombo.getSelectedItem().toString();
+ }
+
+
+ protected OptionTreeModel createOptionTreeModel()
+ {
+ modes = new StringList(jEdit.getModes());
+
+ Collections.sort(modes,new MiscUtilities.StringICaseCompare());
+ modes.add(0, ALL);
+ modeCombo = new JComboBox(modes.toArray());
+ useDefaultsCheck = new JButton(jEdit.getProperty("options.editing.useDefaults"));
+ JLabel editModeLabel = new JLabel(jEdit.getProperty("buffer-options.mode"));
+
+ GridLayout gl = new GridLayout(1, 3);
+ JPanel editModePanel = new JPanel(gl);
+ // JLabel spacer = new JLabel(" ");
+ //for (int i=0; i<3; ++i) editModePanel.add(spacer);
+
+ editModePanel.add(useDefaultsCheck);
+ editModePanel.add(editModeLabel);
+ editModePanel.add(modeCombo);
+
+
+ JPanel content = (JPanel) getContentPane();
+ content.add(editModePanel, BorderLayout.NORTH);
+
+
+ mop = new ModeOptionsPane();
+ modeCombo.addItemListener(mop);
+
+ paneTreeModel = new OptionTreeModel();
+ OptionGroup root = (OptionGroup) (paneTreeModel.getRoot());
+ root.addOptionPane(mop);
+ // iterate through all parsers and get their name, attempt to get an option pane.
+ StringList serviceNames = new StringList(
+ ServiceManager.getServiceNames(SideKickParser.SERVICE));
+ Collections.sort(serviceNames, new MiscUtilities.StringICaseCompare());
+ serviceNames.add(0, ALL);
+ for (String service: serviceNames)
+ {
+ String code = jEdit.getProperty("options.sidekick.parser." + service + ".code");
+ if (code == null) continue;
+ OptionPane optionPane = (OptionPane) BeanShell.eval(
+ jEdit.getActiveView(), BeanShell.getNameSpace(), code);
+ if (optionPane == null) continue;
+
+ if (optionPane instanceof SideKickPropertiesPane) {
+ SideKickPropertiesPane spp = (SideKickPropertiesPane) optionPane;
+ modeCombo.addItemListener(spp);
+ }
+ root.addOptionPane(optionPane);
+ }
+ ActionHandler actionListener = new ActionHandler();
+
+ modeCombo.addActionListener(actionListener);
+ useDefaultsCheck.addActionListener(actionListener);
+
+ String currentMode = jEdit.getActiveView().getBuffer().getMode().getName();
+ modeCombo.setSelectedItem(currentMode);
+
+
+ return paneTreeModel;
+ }
+
+ private void load(Object obj)
+ {
+ if(obj instanceof OptionGroup)
+ {
+ OptionGroup grp = (OptionGroup)obj;
+ Enumeration members = grp.getMembers();
+ while(members.hasMoreElements())
+ {
+ load(members.nextElement());
+ }
+ }
+ else if(obj instanceof SideKickPropertiesPane)
+ {
+ try
+ {
+ ((SideKickPropertiesPane)obj)._load();
+ }
+ catch(Throwable t)
+ {
+ Log.log(Log.ERROR,this,"Error loading options:");
+ Log.log(Log.ERROR,this,t);
+ }
+ }
+
+ } //}}}
+
+
+
+ protected void load() {
+ load(getDefaultGroup());
+ }
+
+ protected OptionGroup getDefaultGroup()
+ {
+ return (OptionGroup) paneTreeModel.getRoot();
+ }
+
+ class ActionHandler implements ActionListener
+ {
+ //{{{ actionPerformed() method
+ public void actionPerformed(ActionEvent evt)
+ {
+ Object source = evt.getSource();
+ if(source == modeCombo)
+ {
+ String m = getMode();
+ useDefaultsCheck.setEnabled(!m.equals(ALL));
+ }
+ else if (source == useDefaultsCheck) try {
+ SideKickPropertiesPane spp = ((SideKickPropertiesPane)currentPane);
+ spp._reset();
+ spp._load();
+ }
+ catch (ClassCastException cce) {
+ Log.log(Log.NOTICE, this, "Wrong kind of pane?", cce);
+ }
+
+ }
+ } //}}}
+
+}
Property changes on: plugins/SideKick/trunk/sidekick/SideKickPropertiesDialog.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: plugins/SideKick/trunk/sidekick/SideKickPropertiesPane.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickPropertiesPane.java (rev 0)
+++ plugins/SideKick/trunk/sidekick/SideKickPropertiesPane.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -0,0 +1,140 @@
+package sidekick;
+
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import javax.swing.JComboBox;
+
+import org.gjt.sp.jedit.AbstractOptionPane;
+import org.gjt.sp.jedit.Mode;
+import org.gjt.sp.jedit.jEdit;
+
+
+//{{{ SideKickPropertiesPane class
+/**
+ * A specialized properties pane which has mode-overridable properties.
+ * Includes convenience methods for getting and setting mode properties, with global
+ * defaults.
+ *
+ * @author ezust
+ *
+ */
+
+abstract public class SideKickPropertiesPane
+ extends AbstractOptionPane implements ItemListener
+{
+
+ String mode = SideKickPropertiesDialog.ALL;
+
+ /**
+ * Load mode properties into input components,
+ * using global props if mode props are not set.
+ *
+ */
+
+ final public void load() {
+ if (initialized) _load();
+ }
+
+ /**
+ * Override this method. Call @ref load().
+ */
+ protected abstract void _load();
+
+ /**
+ * Un-sets all mode properties, so that the global defaults will be used instead.
+ *
+ */
+ protected abstract void _reset();
+
+
+ protected SideKickPropertiesPane(String name) {
+ super(name);
+ }
+
+ protected String getMode() {
+ return mode;
+ }
+
+ /* {{{ Mode Property setter/getter convenience functions
+ */
+
+ public void clearModeProperty(String key) {
+ jEdit.unsetProperty(modePrefix(mode, key));
+ }
+
+ public static void setIntegerProperty(String mode, String key, int value) {
+ jEdit.setIntegerProperty(modePrefix(mode, key), value);
+ }
+
+ public static boolean getBooleanProperty(String mode, String key) {
+ if (jEdit.getProperty(modePrefix(mode, key)) == null)
+ return jEdit.getBooleanProperty(key);
+ else return jEdit.getBooleanProperty(modePrefix(mode, key));
+ }
+
+ public void setBooleanProperty(String key, boolean val) {
+ jEdit.setBooleanProperty(modePrefix(mode, key), val);
+ }
+
+ public static int getIntegerProperty(String mode, String key, int def) {
+ if (jEdit.getProperty(modePrefix(mode, key)) != null) {
+ return jEdit.getIntegerProperty(modePrefix(mode, key), def);
+ }
+ else {
+ return jEdit.getIntegerProperty(key, def);
+ }
+ }
+
+ public static void setProperty(String mode, String key, String value) {
+ jEdit.setProperty(modePrefix(mode,key), value);
+ }
+
+ public static String getProperty(String mode, String key) {
+ String retval = jEdit.getProperty(modePrefix(mode, key));
+ if (retval == null) return jEdit.getProperty(key);
+ else return retval;
+ }
+
+ public static String modePrefix(String key, String mode) {
+ if (mode != null && !mode.equals(SideKickPropertiesDialog.ALL))
+ return "mode." +mode + "." + key;
+ else return key;
+ }
+
+ public void setIntegerProperty(String key, int value) {
+ setIntegerProperty(getMode(), key, value);
+ }
+
+ public void setProperty(String key, String value) {
+ setProperty(getMode(), key, value);
+ }
+
+ /**
+ * @param a the property name.
+ * @return a mode-specific property, depending on what mode is selected in the combo box
+ * of the SideKickProperties dialog.
+ */
+ public String getProperty(String key) {
+ return getProperty(getMode(), key);
+ }
+
+ public boolean getBooleanProperty(String key ) {
+ return getBooleanProperty(getMode(), key);
+ }
+ public int getIntegerProperty(String key, int def) {
+ return getIntegerProperty(getMode(), key, def);
+ }
+ // }}}
+
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ if (e.getSource() instanceof JComboBox) {
+ save();
+ mode = e.getItem().toString();
+ load();
+ }
+ }
+
+
+}
Property changes on: plugins/SideKick/trunk/sidekick/SideKickPropertiesPane.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: plugins/SideKick/trunk/sidekick/SideKickTree.java
===================================================================
--- plugins/SideKick/trunk/sidekick/SideKickTree.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/SideKickTree.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -37,6 +37,8 @@
import java.util.Arrays;
import java.util.Enumeration;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
import javax.swing.Box;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBoxMenuItem;
@@ -49,6 +51,7 @@
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
+import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
@@ -67,17 +70,21 @@
import org.gjt.sp.jedit.EditPane;
import org.gjt.sp.jedit.GUIUtilities;
import org.gjt.sp.jedit.MiscUtilities;
+import org.gjt.sp.jedit.Mode;
import org.gjt.sp.jedit.OperatingSystem;
+import org.gjt.sp.jedit.OptionPane;
import org.gjt.sp.jedit.ServiceManager;
import org.gjt.sp.jedit.View;
import org.gjt.sp.jedit.jEdit;
import org.gjt.sp.jedit.gui.DefaultFocusComponent;
+import org.gjt.sp.jedit.gui.OptionsDialog;
import org.gjt.sp.jedit.msg.CaretChanging;
import org.gjt.sp.jedit.msg.EditPaneUpdate;
import org.gjt.sp.jedit.msg.PluginUpdate;
import org.gjt.sp.jedit.msg.PropertiesChanged;
import org.gjt.sp.jedit.textarea.JEditTextArea;
import org.gjt.sp.jedit.textarea.Selection;
+import org.gjt.sp.util.Log;
//}}}
@@ -91,6 +98,7 @@
//{{{ Instance variables
private RolloverButton parseBtn;
+ private RolloverButton propsBtn;
// private Button parseBtn;
private JComboBox parserCombo;
@@ -102,12 +110,10 @@
private Buffer lastParsedBuffer = null;
protected JPopupMenu configMenu;
-// protected PopupMenu configMenu;
protected JCheckBoxMenuItem onChange;
protected JCheckBoxMenuItem followCaret;
-// protected CheckboxMenuItem onChange;
- protected JCheckBoxMenuItem onSave;
-// protected CheckboxMenuItem onSave;
+ protected JCheckBoxMenuItem onSave;
+
protected View view;
private Timer caretTimer;
@@ -130,6 +136,7 @@
buttonBox.setFloatable(false);
parseBtn = new RolloverButton(GUIUtilities.loadIcon("Parse.png"));
+
parseBtn.setToolTipText(jEdit.getProperty("sidekick-tree.parse"));
parseBtn.setMargin(new Insets(0,0,0,0));
parseBtn.setRequestFocusEnabled(false);
@@ -137,6 +144,10 @@
ActionListener ah = new ActionHandler();
parseBtn.addActionListener(ah);
+ propsBtn= new RolloverButton(GUIUtilities.loadIcon("ButtonProperties.png"));
+ propsBtn.setToolTipText("SideKick Properties");
+ propsBtn.addActionListener(new SideKickProperties());
+
configMenu = new JPopupMenu("Parse");
followCaret = new JCheckBoxMenuItem("Follow Caret");
@@ -158,6 +169,7 @@
followCaret.addActionListener(ah);
buttonBox.add(parseBtn);
+ buttonBox.add(propsBtn);
buttonBox.add(Box.createGlue());
@@ -372,9 +384,12 @@
private void propertiesChanged()
{
followCaret.setSelected(SideKick.isFollowCaret());
-
- autoExpandTree = jEdit.getIntegerProperty("sidekick-tree.auto-expand-tree-depth", 1);
- if (jEdit.getBooleanProperty("options.sidekick.showStatusWindow") ) {
+ Mode m = view.getBuffer().getMode();
+ String mode = m != null? m.getName(): null;
+ autoExpandTree = SideKickPropertiesPane.getIntegerProperty(mode, SideKick.AUTO_EXPAND_DEPTH, 1);
+ // autoExpandTree = ModeOptions.getAutoExpandTreeDepth();
+
+ if (SideKickPropertiesPane.getBooleanProperty(mode, SideKick.SHOW_STATUS)) {
if (!statusShowing) {
remove(topPanel);
splitter.setTopComponent(topPanel);
@@ -687,6 +702,29 @@
}
} //}}}
+ // SidekickProperties class
+ /**
+ * This class creates an options dialog containing an optionpane
+ * for each SideKick service, as well as one for SideKick itself.
+ * This properties pane is mode-sensitive.
+ *
+ * sidekick options, and one for the specific plugin's option pane.
+ */
+ class SideKickProperties implements ActionListener {
+
+ public void actionPerformed(ActionEvent e)
+ {
+ try {
+ new SideKickPropertiesDialog(view);
+ }
+ catch (Exception ex) {
+ Log.log (Log.ERROR, this, "dialog create failed", ex);
+ }
+
+ }
+
+ }
+
//{{{ Renderer class
class Renderer extends DefaultTreeCellRenderer
{
Modified: plugins/SideKick/trunk/sidekick/enhanced/SourceTree.java
===================================================================
--- plugins/SideKick/trunk/sidekick/enhanced/SourceTree.java 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/sidekick/enhanced/SourceTree.java 2006-10-18 13:47:24 UTC (rev 7617)
@@ -162,7 +162,7 @@
// let the view handle marker actions
// is there an easier way to assign a jEdit shortcut to a tree?
if ( _actionShortcuts.containsKey( _key ) )
- view.getInputHandler().handleKey( _key );
+ view.getInputHandler().handleKey( _key);
else if ( _code == KeyEvent.VK_ESCAPE || _code == KeyEvent.VK_CANCEL )
view.getTextArea().requestFocus();
} //}}}
Modified: plugins/SideKick/trunk/users-guide.xml
===================================================================
--- plugins/SideKick/trunk/users-guide.xml 2006-10-18 11:45:49 UTC (rev 7616)
+++ plugins/SideKick/trunk/users-guide.xml 2006-10-18 13:47:24 UTC (rev 7617)
@@ -346,8 +346,13 @@
<listitem><para>
-<emphasis role="bold">Version 0.6.8</emphasis> requires JDK 1.5, jEdit 4.3pre5 and ErrorListPlugin 1.4.</para>
+<emphasis role="bold">Version 0.7</emphasis> requires JDK 1.5, jEdit 4.3pre8 and ErrorListPlugin 1.4.</para>
<itemizedlist>
+ <listitem><para>
+ Added a mode-specific option pane, so that settings can
+ be customized on a mode basis by SideKick and its parser service plugins. (ezust).
+ </para>
+ </listitem>
<listitem><para>
Made the completion popup accept-characters configurable. Prevented the completion popup from showing when the word at the caret is the same as a completion list entry. (hertzhaft) </para>
</listitem>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|