From: <sh...@us...> - 2007-09-16 22:59:23
|
Revision: 10587 http://jedit.svn.sourceforge.net/jedit/?rev=10587&view=rev Author: shlomy Date: 2007-09-16 15:59:22 -0700 (Sun, 16 Sep 2007) Log Message: ----------- More refactoring, make it more organized Modified Paths: -------------- plugins/CtagsSideKick/trunk/CtagsSideKick.props plugins/CtagsSideKick/trunk/ctags/sidekick/MapperManager.java plugins/CtagsSideKick/trunk/ctags/sidekick/ParsedData.java plugins/CtagsSideKick/trunk/ctags/sidekick/Parser.java plugins/CtagsSideKick/trunk/ctags/sidekick/Plugin.java plugins/CtagsSideKick/trunk/ctags/sidekick/Tag.java plugins/CtagsSideKick/trunk/ctags/sidekick/TreeMapperEditor.java plugins/CtagsSideKick/trunk/services.xml Added Paths: ----------- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AbstractTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AttributeValueTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/FlatNamespaceTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ITreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/KindTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ListTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/NamespaceTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/ plugins/CtagsSideKick/trunk/ctags/sidekick/options/GeneralOptionPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/IModeOptionPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeCtagsInvocationPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeMapperPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeOptionsPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/options/TreeStyleOptionPane.java Removed Paths: ------------- plugins/CtagsSideKick/trunk/ctags/sidekick/AbstractTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/AttributeValueTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/FlatNamespaceTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/GeneralOptionPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/IModeOptionPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/ITreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/KindTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/ListTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/ModeCtagsInvocationPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/ModeMapperPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/ModeOptionsPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/NamespaceTreeMapper.java plugins/CtagsSideKick/trunk/ctags/sidekick/OptionPane.java plugins/CtagsSideKick/trunk/ctags/sidekick/TreeStyleOptionPane.java Modified: plugins/CtagsSideKick/trunk/CtagsSideKick.props =================================================================== --- plugins/CtagsSideKick/trunk/CtagsSideKick.props 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/CtagsSideKick.props 2007-09-16 22:59:22 UTC (rev 10587) @@ -17,8 +17,8 @@ # Options plugin.ctags.sidekick.Plugin.option-group=CtagsSideKick-general CtagsSideKick-tree-style -options.CtagsSideKick-general.code=new ctags.sidekick.GeneralOptionPane(); -options.CtagsSideKick-tree-style.code=new ctags.sidekick.TreeStyleOptionPane(); +options.CtagsSideKick-general.code=new ctags.sidekick.options.GeneralOptionPane(); +options.CtagsSideKick-tree-style.code=new ctags.sidekick.options.TreeStyleOptionPane(); options.CtagsSideKick.ctags_path_note=NOTE: CtagsSideKick requires Exuberant ctags Version 5.5 or later from http://ctags.sourceforge.net, the standard ctags program will not work! options.CtagsSideKick.ctags_path_label=ctags Path: Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/AbstractTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/AbstractTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/AbstractTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,18 +0,0 @@ -package ctags.sidekick; - - -public abstract class AbstractTreeMapper implements ITreeMapper { - - public ITreeMapper getMapper(String params) { - return this; - } - public void setLang(String lang) { - } - - public String toString() { - return getName(); - } - public String getParams() { - return null; - } -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/AttributeValueTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/AttributeValueTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/AttributeValueTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,54 +0,0 @@ -package ctags.sidekick; - -import java.util.Vector; - -public class AttributeValueTreeMapper extends AbstractTreeMapper { - - String attr; - String defVal; - static private final String BASE_NAME = "AttributeValue"; - - public AttributeValueTreeMapper(String params) { - setParams(params); - } - - private void setParams(String params) { - if (params != null) { - String [] parts = params.split(" ", 2); - attr = parts[0]; - if (parts.length > 1) - defVal = parts[1]; - else - defVal = null; - } else - attr = defVal = null; - } - - public ITreeMapper getMapper(String params) { - return new AttributeValueTreeMapper(params); - } - - public Vector<Object> getPath(Tag tag) { - Vector<Object> path = new Vector<Object>(); - Object val = tag.getInfo().get(attr); - if (val == null) - val = defVal; - if (val != null) - path.add(val); - return path; - } - public String getName() { - return BASE_NAME; - } - public String toString() { - return BASE_NAME + "(" + getParams() + ")"; - } - public String getParams() { - StringBuffer params = new StringBuffer(); - if (attr != null) - params.append(attr); - if (defVal != null) - params.append(" " + defVal); - return params.toString(); - } -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/FlatNamespaceTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/FlatNamespaceTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/FlatNamespaceTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,63 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -package ctags.sidekick; -import java.util.Hashtable; -import java.util.Vector; - - -public class FlatNamespaceTreeMapper extends NamespaceTreeMapper -{ - public String getName() { - return "FlatNamespace"; - } - - public Vector<Object> getPath(Tag tag) - { - Vector<Object> path = new Vector<Object>(); - Hashtable info = tag.getInfo(); - for (int i = 0; i < Keywords.length; i++) - { - String ns = (String)info.get(Keywords[i]); - if (ns != null) - { - // If the tag is also a namespace, concatenate it - // to its own namespace. - boolean tagIsNamespace = false; - String kind = (String) info.get("kind"); - if (kind != null && kind.length() > 0) - { - for (int j = 0; j < Keywords.length; j++) - { - if (kind.equals(Keywords[j])) - { - tagIsNamespace = true; - break; - } - } - } - if (tagIsNamespace) - tag.setShort(ns + separator + tag.getShortString()); - else - path.add(ns); - break; - } - } - return path; - } -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/GeneralOptionPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/GeneralOptionPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/GeneralOptionPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,124 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -Note: The code for the ctags path and the ctags version notice -was taken from the CodeBrowser plugin by Gerd Knops. -*/ - -package ctags.sidekick; -import java.awt.Color; - -import javax.swing.JCheckBox; -import javax.swing.JPanel; -import javax.swing.JTextArea; -import javax.swing.JTextField; -import javax.swing.border.EmptyBorder; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -import org.gjt.sp.jedit.AbstractOptionPane; -import org.gjt.sp.jedit.jEdit; - -/** ************************************************************************** */ -public class GeneralOptionPane extends AbstractOptionPane { - /** - * - */ - private static final long serialVersionUID = 1L; - - /*************************************************************************** - * Vars - **************************************************************************/ - - private JTextField ctagsPathTF; - private JCheckBox sort; - private JCheckBox folds_first; - private JCheckBox show_icons; - - static final String PREFIX = Plugin.OPTION_PREFIX; - static final String SORT = PREFIX + "sort"; - static final String FOLDS_BEFORE_LEAFS = PREFIX + "sort_folds_first"; - static final String SHOW_ICONS = PREFIX + "show_icons"; - static final String LABEL = "_label"; - - static final String ICONS = PREFIX + "icons."; - - static final String PARSE_ACTION_PROP = "CtagsSideKick.parse.action"; - - /*************************************************************************** - * Factory methods - **************************************************************************/ - public GeneralOptionPane() - { - super("CtagsSideKick-general"); - setBorder(new EmptyBorder(5, 5, 5, 5)); - - JTextArea ta = new JTextArea(jEdit - .getProperty(PREFIX + "ctags_path_note"), 0, 60); - ta.setEditable(false); - ta.setLineWrap(true); - ta.setWrapStyleWord(true); - ta.setBackground(Color.yellow); - - addComponent(ta); - - addSeparator(); - - addComponent(jEdit - .getProperty(PREFIX + "ctags_path_label"), - ctagsPathTF = new JTextField(jEdit - .getProperty(PREFIX + "ctags_path"), 40)); - - addSeparator(); - - JPanel sortPanel = new JPanel(); - sort = new JCheckBox( - jEdit.getProperty(SORT + LABEL), - jEdit.getBooleanProperty(SORT, false)); - sortPanel.add(sort); - folds_first = new JCheckBox( - jEdit.getProperty(FOLDS_BEFORE_LEAFS + LABEL), - jEdit.getBooleanProperty(FOLDS_BEFORE_LEAFS, true)); - sortPanel.add(folds_first); - sort.addChangeListener(new ChangeListener() - { - public void stateChanged(ChangeEvent arg0) { - folds_first.setEnabled(sort.isSelected()); - } - }); - addComponent(sortPanel); - show_icons = new JCheckBox( - jEdit.getProperty(SHOW_ICONS + LABEL), - jEdit.getBooleanProperty(SHOW_ICONS, false)); - addComponent(show_icons); - } - - /*************************************************************************** - * Implementation - **************************************************************************/ - public void save() - { - jEdit.setProperty("options.CtagsSideKick.ctags_path", ctagsPathTF - .getText()); - jEdit.setBooleanProperty(SORT, sort.isSelected()); - jEdit.setBooleanProperty(FOLDS_BEFORE_LEAFS, folds_first.isSelected()); - jEdit.setBooleanProperty(SHOW_ICONS, show_icons.isSelected()); - jEdit.getAction(jEdit.getProperty(PARSE_ACTION_PROP)).invoke(jEdit.getActiveView()); - } -} -/** ***********************************************************************EOF */ - Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/IModeOptionPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/IModeOptionPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/IModeOptionPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,10 +0,0 @@ -package ctags.sidekick; - -public interface IModeOptionPane { - // Mode has changed - void modeSelected(String mode); - // Save all changes (in all modes) - void save(); - // Reset current mode options to the defaults - void resetCurrentMode(); -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/ITreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ITreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ITreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,30 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -package ctags.sidekick; -import java.util.Vector; - - -public interface ITreeMapper { - String getName(); - Vector<Object> getPath(Tag tag); - ITreeMapper getMapper(String params); - void setLang(String lang); - String getParams(); -} - Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/KindTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/KindTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/KindTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,35 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -package ctags.sidekick; -import java.util.Vector; - -public class KindTreeMapper extends AbstractTreeMapper { - - public String getName() - { - return "Kind"; - } - public Vector<Object> getPath(Tag tag) { - Vector<Object> path = new Vector<Object>(); - String kind = tag.getKind(); - if (kind != null && kind.length() > 0) - path.add(kind); - return path; - } -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/ListTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ListTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ListTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,38 +0,0 @@ -package ctags.sidekick; -import java.util.Vector; - -public class ListTreeMapper extends AbstractTreeMapper { - - Vector <ITreeMapper> mappers; - - public ListTreeMapper() { - mappers = new Vector<ITreeMapper>(); - } - - public void add(ITreeMapper mapper) { - mappers.add(mapper); - } - - public Vector<Object> getPath(Tag tag) { - Vector<Object> path = new Vector<Object>(); - for (int i = 0; i < mappers.size(); i++) { - ITreeMapper mapper = mappers.get(i); - path.addAll(mapper.getPath(tag)); - } - return path; - } - - public void setLang(String lang) { - for (int i = 0; i < mappers.size(); i++) { - ITreeMapper mapper = mappers.get(i); - mapper.setLang(lang); - } - } - public Vector <ITreeMapper> getComponents() { - return mappers; - } - - public String getName() { - return "Composite"; - } -} Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/MapperManager.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/MapperManager.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/MapperManager.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -5,6 +5,14 @@ import javax.swing.JOptionPane; +import ctags.sidekick.mappers.AttributeValueTreeMapper; +import ctags.sidekick.mappers.FlatNamespaceTreeMapper; +import ctags.sidekick.mappers.ITreeMapper; +import ctags.sidekick.mappers.KindTreeMapper; +import ctags.sidekick.mappers.ListTreeMapper; +import ctags.sidekick.mappers.NamespaceTreeMapper; +import ctags.sidekick.options.ModeOptionsPane; + public class MapperManager { static public String MAPPER_OPTION = "options.CtagsSideKick.mapper"; Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/ModeCtagsInvocationPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ModeCtagsInvocationPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ModeCtagsInvocationPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,59 +0,0 @@ -package ctags.sidekick; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map.Entry; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; - -import org.gjt.sp.jedit.jEdit; - -@SuppressWarnings("serial") -public class ModeCtagsInvocationPane extends JPanel implements IModeOptionPane { - - static private final String CTAGS_MODE_OPTIONS_LABEL = "options.CtagsSideKick.mode.ctags_options_label"; - private JTextField ctagsOptions; - private HashMap<String, String> modeOptions; - private String mode; - - public ModeCtagsInvocationPane() { - JLabel optionsLabel = new JLabel(jEdit.getProperty(CTAGS_MODE_OPTIONS_LABEL)); - ctagsOptions = new JTextField(30); - add(optionsLabel); - add(ctagsOptions); - modeOptions = new HashMap<String, String>(); - mode = null; - } - - public void modeSelected(String mode) { - if (this.mode != null) - modeOptions.put(this.mode, ctagsOptions.getText()); - this.mode = mode; - String options = modeOptions.get(mode); - if (options == null) { - options = ModeOptionsPane.getProperty(mode, Plugin.CTAGS_MODE_OPTIONS); - modeOptions.put(mode, options); - } - ctagsOptions.setText(options); - } - - public void resetCurrentMode() { - String options = modeOptions.get(null); - modeOptions.put(mode, options); - ctagsOptions.setText(options); - } - - public void save() { - modeOptions.put(this.mode, ctagsOptions.getText()); - Iterator entries = modeOptions.entrySet().iterator(); - while (entries.hasNext()) { - Entry e = (Entry) entries.next(); - String mode = (String) e.getKey(); - String options = (String) e.getValue(); - ModeOptionsPane.setProperty(mode, Plugin.CTAGS_MODE_OPTIONS, options); - } - } - -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/ModeMapperPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ModeMapperPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ModeMapperPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,163 +0,0 @@ -package ctags.sidekick; - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Vector; -import java.util.Map.Entry; - -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; -import javax.swing.border.TitledBorder; - -import org.gjt.sp.jedit.GUIUtilities; -import org.gjt.sp.jedit.gui.RolloverButton; - -@SuppressWarnings("serial") -public class ModeMapperPane extends JPanel implements IModeOptionPane { - JList mapperList; - DefaultListModel mapperModel; - HashMap<String, DefaultListModel> mapperModels; - JList componentList; - DefaultListModel componentListModel; - String mode; - - public ModeMapperPane() - { - setLayout(new BorderLayout()); - TitledBorder b = new TitledBorder("Grouping"); - - JPanel topPanel = new JPanel(new BorderLayout()); - topPanel.setBorder(b); - add(topPanel); - - mapperModels = new HashMap<String, DefaultListModel>(); - mapperList = new JList(); - mapperList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - topPanel.add(new JScrollPane(mapperList), BorderLayout.CENTER); - - JButton add = new RolloverButton(GUIUtilities.loadIcon("Plus.png")); - add.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - addMapper(); - } - }); - JButton remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png")); - remove.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - removeMapper(); - } - }); - JButton up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); - up.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - mapperUp(); - } - }); - JButton down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); - down.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - mapperDown(); - } - }); - - JPanel buttons = new JPanel(new GridLayout(1, 0)); - buttons.add(add); - buttons.add(remove); - buttons.add(up); - buttons.add(down); - topPanel.add(buttons, BorderLayout.SOUTH); - - mode = null; - } - - public void modeSelected(String mode) { - this.mode = mode; - mapperModel = getModelForMode(mode); - mapperModels.put(mode, mapperModel); - mapperList.setModel(mapperModel); - } - - private DefaultListModel getModelForMode(String mode) { - DefaultListModel model = mapperModels.get(mode); - if (model == null) - { - model = new DefaultListModel(); - ListTreeMapper mapper; - mapper = (ListTreeMapper) MapperManager.getMapperForMode(mode); - Vector<ITreeMapper> components = mapper.getComponents(); - for (int i = 0; i < components.size(); i++) - model.addElement(components.get(i)); - } - return model; - } - - protected void addMapper() { - ITreeMapper mapper = new TreeMapperEditor( - GUIUtilities.getParentDialog(this)).getMapper(); - if (mapper != null) { - int index = mapperList.getSelectedIndex(); - mapperModel.add(index + 1, mapper); - mapperList.setSelectedIndex(index + 1); - } - } - - protected void removeMapper() { - int index = mapperList.getSelectedIndex(); - if (index >= 0) { - mapperModel.remove(index); - if (index < mapperModel.size()) - mapperList.setSelectedIndex(index); - } - } - - private void mapperDown() { - int index = mapperList.getSelectedIndex(); - if (index < mapperModel.size() - 1) { - ITreeMapper current = (ITreeMapper) mapperModel.get(index); - ITreeMapper other = (ITreeMapper) mapperModel.get(index + 1); - mapperModel.set(index + 1, current); - mapperModel.set(index, other); - mapperList.setSelectedIndex(index + 1); - } - } - private void mapperUp() { - int index = mapperList.getSelectedIndex(); - if (index > 0) { - ITreeMapper current = (ITreeMapper) mapperModel.get(index); - ITreeMapper other = (ITreeMapper) mapperModel.get(index - 1); - mapperModel.set(index - 1, current); - mapperModel.set(index, other); - mapperList.setSelectedIndex(index - 1); - } - } - - public void save() - { - Iterator models = mapperModels.entrySet().iterator(); - while (models.hasNext()) { - Entry e = (Entry) models.next(); - String mode = (String) e.getKey(); - DefaultListModel model = (DefaultListModel) e.getValue(); - ListTreeMapper mapper = new ListTreeMapper(); - for (int i = 0; i < model.getSize(); i++) - mapper.add((ITreeMapper) model.get(i)); - MapperManager.setMapperForMode(mode, mapper); - } - } - - public void resetCurrentMode() { - DefaultListModel model = getModelForMode(null); - mapperModel.clear(); - for (int i = 0; i < model.size(); i++) - mapperModel.addElement(model.elementAt(i)); - } - -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/ModeOptionsPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ModeOptionsPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ModeOptionsPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,55 +0,0 @@ -package ctags.sidekick; - -import java.awt.GridLayout; -import java.util.Vector; - -import javax.swing.JPanel; - -import org.gjt.sp.jedit.jEdit; - -@SuppressWarnings("serial") -public class ModeOptionsPane extends sidekick.ModeOptionsPane { - - Vector<IModeOptionPane> modePanes; - - public ModeOptionsPane() - { - super("CtagsSideKick.mode"); - } - - protected void _init() { - modePanes = new Vector<IModeOptionPane>(); - - ModeCtagsInvocationPane invocationPane = new ModeCtagsInvocationPane(); - addComponent(invocationPane); - modePanes.add(invocationPane); - - JPanel optionPanes = new JPanel(new GridLayout(1, 0)); - addComponent(optionPanes); - ModeMapperPane mapperPane = new ModeMapperPane(); - optionPanes.add(mapperPane); - modePanes.add(mapperPane); - - _load(); - } - - protected void _save() - { - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).save(); - jEdit.getAction(jEdit.getProperty(GeneralOptionPane.PARSE_ACTION_PROP)).invoke(jEdit.getActiveView()); - } - - protected void _reset() - { - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).resetCurrentMode(); - } - - protected void _load() - { - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).modeSelected(getMode()); - } - -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/NamespaceTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/NamespaceTreeMapper.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/NamespaceTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,64 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -package ctags.sidekick; -import java.util.Hashtable; -import java.util.Vector; - -public class NamespaceTreeMapper extends AbstractTreeMapper { - - static final String [] Keywords = { - "namespace", "class", "union", "struct", "enum" - }; - - String separator, separatorRegExp; - - public String getName() - { - return "Namespace"; - } - public void setLang(String lang) - { - if (lang.equals("c++") || lang.equals("c")) - { - separatorRegExp = separator = "::"; - } - else - { - separator = "."; - separatorRegExp = "\\."; - } - } - public Vector<Object> getPath(Tag tag) - { - Vector<Object> path = new Vector<Object>(); - Hashtable info = tag.getInfo(); - for (int i = 0; i < Keywords.length; i++) - { - String ns = (String)info.get(Keywords[i]); - if (ns != null) - { - String [] parts = ns.split(separatorRegExp); - for (int j = 0; j < parts.length; j++) - path.add(parts[j]); - break; - } - } - return path; - } -} Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/OptionPane.java =================================================================== Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/ParsedData.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/ParsedData.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/ParsedData.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -28,6 +28,10 @@ import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.jEdit; +import ctags.sidekick.mappers.ITreeMapper; +import ctags.sidekick.mappers.KindTreeMapper; +import ctags.sidekick.options.GeneralOptionPane; + import sidekick.IAsset; import sidekick.SideKickParsedData; Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/Parser.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/Parser.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/Parser.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -41,6 +41,8 @@ import org.gjt.sp.jedit.jEdit; import org.gjt.sp.jedit.io.VFSManager; +import ctags.sidekick.options.ModeOptionsPane; + import sidekick.SideKickParsedData; import sidekick.SideKickParser; import sidekick.SideKickPlugin; Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/Plugin.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/Plugin.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/Plugin.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -21,13 +21,15 @@ import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.jEdit; +import ctags.sidekick.options.GeneralOptionPane; + import sidekick.SideKickPlugin; public class Plugin extends EditPlugin { public static final String NAME = "CtagsSideKick"; public static final String OPTION_PREFIX = "options.CtagsSideKick."; - static final String CTAGS_MODE_OPTIONS = "options.CtagsSideKick.mode.ctags_options"; + public static final String CTAGS_MODE_OPTIONS = "options.CtagsSideKick.mode.ctags_options"; @Override public void start() { Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/Tag.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/Tag.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/Tag.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -25,7 +25,9 @@ import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.jEdit; +import ctags.sidekick.options.GeneralOptionPane; + import sidekick.enhanced.SourceAsset; public class Tag extends SourceAsset @@ -40,7 +42,7 @@ static Hashtable<String, ImageIcon> icons = new Hashtable<String, ImageIcon>(); - Tag(final Buffer buffer, final Hashtable info) + public Tag(final Buffer buffer, final Hashtable info) { super((String)info.get("k_tag"), Integer.parseInt((String)info.get("line")), @@ -79,16 +81,16 @@ } } - int getLine() + public int getLine() { return line; } - String getKind() + public String getKind() { return kind; } - Hashtable getInfo() + public Hashtable getInfo() { return info; } Modified: plugins/CtagsSideKick/trunk/ctags/sidekick/TreeMapperEditor.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/TreeMapperEditor.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/TreeMapperEditor.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -16,6 +16,8 @@ import org.gjt.sp.jedit.GUIUtilities; +import ctags.sidekick.mappers.ITreeMapper; + @SuppressWarnings("serial") public class TreeMapperEditor extends JDialog { Deleted: plugins/CtagsSideKick/trunk/ctags/sidekick/TreeStyleOptionPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/TreeStyleOptionPane.java 2007-09-16 22:39:06 UTC (rev 10586) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/TreeStyleOptionPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -1,107 +0,0 @@ -/* -Copyright (C) 2006 Shlomy Reinstein - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -*/ - -package ctags.sidekick; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Arrays; -import java.util.Vector; - -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; - -import org.gjt.sp.jedit.AbstractOptionPane; -import org.gjt.sp.jedit.MiscUtilities; -import org.gjt.sp.jedit.Mode; -import org.gjt.sp.jedit.jEdit; - -public class TreeStyleOptionPane extends AbstractOptionPane implements ActionListener { - /** - * - */ - private static final long serialVersionUID = 1L; - - JComboBox modeCB; - Vector<IModeOptionPane> modePanes; - JButton resetBtn; - - public TreeStyleOptionPane() - { - super("CtagsSideKick-tree-style"); - setBorder(new EmptyBorder(5, 5, 5, 5)); - - Mode[] modes = jEdit.getModes(); - Arrays.sort(modes,new MiscUtilities.StringICaseCompare()); - String[] modeNames = new String[modes.length + 1]; - modeNames[0] = "<global defaults>"; - for(int i = 0; i < modes.length; i++) - modeNames[i + 1] = modes[i].getName(); - modeCB = new JComboBox(modeNames); - modeCB.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - modeSelected(); - } - }); - addComponent("Change settings for mode:", modeCB); - - modePanes = new Vector<IModeOptionPane>(); - - ModeCtagsInvocationPane invocationPane = new ModeCtagsInvocationPane(); - addComponent(invocationPane); - modePanes.add(invocationPane); - - JPanel optionPanes = new JPanel(new GridLayout(1, 0)); - addComponent(optionPanes); - ModeMapperPane mapperPane = new ModeMapperPane(); - optionPanes.add(mapperPane); - modePanes.add(mapperPane); - - addSeparator(); - - resetBtn = new JButton("Reset to defaults"); - resetBtn.addActionListener(this); - addComponent(resetBtn); - - modeCB.setSelectedIndex(0); - } - - private void modeSelected() { - int index = modeCB.getSelectedIndex(); - String mode; - if (index == 0) { - mode = null; - resetBtn.setEnabled(false); - } else { - mode = (String) modeCB.getItemAt(index); - resetBtn.setEnabled(true); - } - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).modeSelected(mode); - } - - public void save() - { - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).save(); - } - - public void actionPerformed(ActionEvent e) { - if (e.getSource() == resetBtn) { - for (int i = 0; i < modePanes.size(); i++) - modePanes.get(i).resetCurrentMode(); - } - - } -} -/** ***********************************************************************EOF */ - Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AbstractTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AbstractTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AbstractTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,19 @@ +package ctags.sidekick.mappers; + + + +public abstract class AbstractTreeMapper implements ITreeMapper { + + public ITreeMapper getMapper(String params) { + return this; + } + public void setLang(String lang) { + } + + public String toString() { + return getName(); + } + public String getParams() { + return null; + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AttributeValueTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AttributeValueTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/AttributeValueTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,56 @@ +package ctags.sidekick.mappers; + +import java.util.Vector; + +import ctags.sidekick.Tag; + +public class AttributeValueTreeMapper extends AbstractTreeMapper { + + String attr; + String defVal; + static private final String BASE_NAME = "AttributeValue"; + + public AttributeValueTreeMapper(String params) { + setParams(params); + } + + private void setParams(String params) { + if (params != null) { + String [] parts = params.split(" ", 2); + attr = parts[0]; + if (parts.length > 1) + defVal = parts[1]; + else + defVal = null; + } else + attr = defVal = null; + } + + public ITreeMapper getMapper(String params) { + return new AttributeValueTreeMapper(params); + } + + public Vector<Object> getPath(Tag tag) { + Vector<Object> path = new Vector<Object>(); + Object val = tag.getInfo().get(attr); + if (val == null) + val = defVal; + if (val != null) + path.add(val); + return path; + } + public String getName() { + return BASE_NAME; + } + public String toString() { + return BASE_NAME + "(" + getParams() + ")"; + } + public String getParams() { + StringBuffer params = new StringBuffer(); + if (attr != null) + params.append(attr); + if (defVal != null) + params.append(" " + defVal); + return params.toString(); + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/FlatNamespaceTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/FlatNamespaceTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/FlatNamespaceTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,65 @@ +/* +Copyright (C) 2006 Shlomy Reinstein + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +package ctags.sidekick.mappers; +import java.util.Hashtable; +import java.util.Vector; + +import ctags.sidekick.Tag; + + +public class FlatNamespaceTreeMapper extends NamespaceTreeMapper +{ + public String getName() { + return "FlatNamespace"; + } + + public Vector<Object> getPath(Tag tag) + { + Vector<Object> path = new Vector<Object>(); + Hashtable info = tag.getInfo(); + for (int i = 0; i < Keywords.length; i++) + { + String ns = (String)info.get(Keywords[i]); + if (ns != null) + { + // If the tag is also a namespace, concatenate it + // to its own namespace. + boolean tagIsNamespace = false; + String kind = (String) info.get("kind"); + if (kind != null && kind.length() > 0) + { + for (int j = 0; j < Keywords.length; j++) + { + if (kind.equals(Keywords[j])) + { + tagIsNamespace = true; + break; + } + } + } + if (tagIsNamespace) + tag.setShort(ns + separator + tag.getShortString()); + else + path.add(ns); + break; + } + } + return path; + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ITreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ITreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ITreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,32 @@ +/* +Copyright (C) 2006 Shlomy Reinstein + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +package ctags.sidekick.mappers; +import java.util.Vector; + +import ctags.sidekick.Tag; + + +public interface ITreeMapper { + String getName(); + Vector<Object> getPath(Tag tag); + ITreeMapper getMapper(String params); + void setLang(String lang); + String getParams(); +} + Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/KindTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/KindTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/KindTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,37 @@ +/* +Copyright (C) 2006 Shlomy Reinstein + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +package ctags.sidekick.mappers; +import java.util.Vector; + +import ctags.sidekick.Tag; + +public class KindTreeMapper extends AbstractTreeMapper { + + public String getName() + { + return "Kind"; + } + public Vector<Object> getPath(Tag tag) { + Vector<Object> path = new Vector<Object>(); + String kind = tag.getKind(); + if (kind != null && kind.length() > 0) + path.add(kind); + return path; + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ListTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ListTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/ListTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,40 @@ +package ctags.sidekick.mappers; +import java.util.Vector; + +import ctags.sidekick.Tag; + +public class ListTreeMapper extends AbstractTreeMapper { + + Vector <ITreeMapper> mappers; + + public ListTreeMapper() { + mappers = new Vector<ITreeMapper>(); + } + + public void add(ITreeMapper mapper) { + mappers.add(mapper); + } + + public Vector<Object> getPath(Tag tag) { + Vector<Object> path = new Vector<Object>(); + for (int i = 0; i < mappers.size(); i++) { + ITreeMapper mapper = mappers.get(i); + path.addAll(mapper.getPath(tag)); + } + return path; + } + + public void setLang(String lang) { + for (int i = 0; i < mappers.size(); i++) { + ITreeMapper mapper = mappers.get(i); + mapper.setLang(lang); + } + } + public Vector <ITreeMapper> getComponents() { + return mappers; + } + + public String getName() { + return "Composite"; + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/NamespaceTreeMapper.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/NamespaceTreeMapper.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/mappers/NamespaceTreeMapper.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,66 @@ +/* +Copyright (C) 2006 Shlomy Reinstein + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +package ctags.sidekick.mappers; +import java.util.Hashtable; +import java.util.Vector; + +import ctags.sidekick.Tag; + +public class NamespaceTreeMapper extends AbstractTreeMapper { + + static final String [] Keywords = { + "namespace", "class", "union", "struct", "enum" + }; + + String separator, separatorRegExp; + + public String getName() + { + return "Namespace"; + } + public void setLang(String lang) + { + if (lang.equals("c++") || lang.equals("c")) + { + separatorRegExp = separator = "::"; + } + else + { + separator = "."; + separatorRegExp = "\\."; + } + } + public Vector<Object> getPath(Tag tag) + { + Vector<Object> path = new Vector<Object>(); + Hashtable info = tag.getInfo(); + for (int i = 0; i < Keywords.length; i++) + { + String ns = (String)info.get(Keywords[i]); + if (ns != null) + { + String [] parts = ns.split(separatorRegExp); + for (int j = 0; j < parts.length; j++) + path.add(parts[j]); + break; + } + } + return path; + } +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/options/GeneralOptionPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/options/GeneralOptionPane.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/options/GeneralOptionPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,126 @@ +/* +Copyright (C) 2006 Shlomy Reinstein + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Note: The code for the ctags path and the ctags version notice +was taken from the CodeBrowser plugin by Gerd Knops. +*/ + +package ctags.sidekick.options; +import java.awt.Color; + +import javax.swing.JCheckBox; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.border.EmptyBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.gjt.sp.jedit.AbstractOptionPane; +import org.gjt.sp.jedit.jEdit; + +import ctags.sidekick.Plugin; + +/** ************************************************************************** */ +public class GeneralOptionPane extends AbstractOptionPane { + /** + * + */ + private static final long serialVersionUID = 1L; + + /*************************************************************************** + * Vars + **************************************************************************/ + + private JTextField ctagsPathTF; + private JCheckBox sort; + private JCheckBox folds_first; + private JCheckBox show_icons; + + static final String PREFIX = Plugin.OPTION_PREFIX; + public static final String SORT = PREFIX + "sort"; + public static final String FOLDS_BEFORE_LEAFS = PREFIX + "sort_folds_first"; + public static final String SHOW_ICONS = PREFIX + "show_icons"; + static final String LABEL = "_label"; + + public static final String ICONS = PREFIX + "icons."; + + static final String PARSE_ACTION_PROP = "CtagsSideKick.parse.action"; + + /*************************************************************************** + * Factory methods + **************************************************************************/ + public GeneralOptionPane() + { + super("CtagsSideKick-general"); + setBorder(new EmptyBorder(5, 5, 5, 5)); + + JTextArea ta = new JTextArea(jEdit + .getProperty(PREFIX + "ctags_path_note"), 0, 60); + ta.setEditable(false); + ta.setLineWrap(true); + ta.setWrapStyleWord(true); + ta.setBackground(Color.yellow); + + addComponent(ta); + + addSeparator(); + + addComponent(jEdit + .getProperty(PREFIX + "ctags_path_label"), + ctagsPathTF = new JTextField(jEdit + .getProperty(PREFIX + "ctags_path"), 40)); + + addSeparator(); + + JPanel sortPanel = new JPanel(); + sort = new JCheckBox( + jEdit.getProperty(SORT + LABEL), + jEdit.getBooleanProperty(SORT, false)); + sortPanel.add(sort); + folds_first = new JCheckBox( + jEdit.getProperty(FOLDS_BEFORE_LEAFS + LABEL), + jEdit.getBooleanProperty(FOLDS_BEFORE_LEAFS, true)); + sortPanel.add(folds_first); + sort.addChangeListener(new ChangeListener() + { + public void stateChanged(ChangeEvent arg0) { + folds_first.setEnabled(sort.isSelected()); + } + }); + addComponent(sortPanel); + show_icons = new JCheckBox( + jEdit.getProperty(SHOW_ICONS + LABEL), + jEdit.getBooleanProperty(SHOW_ICONS, false)); + addComponent(show_icons); + } + + /*************************************************************************** + * Implementation + **************************************************************************/ + public void save() + { + jEdit.setProperty("options.CtagsSideKick.ctags_path", ctagsPathTF + .getText()); + jEdit.setBooleanProperty(SORT, sort.isSelected()); + jEdit.setBooleanProperty(FOLDS_BEFORE_LEAFS, folds_first.isSelected()); + jEdit.setBooleanProperty(SHOW_ICONS, show_icons.isSelected()); + jEdit.getAction(jEdit.getProperty(PARSE_ACTION_PROP)).invoke(jEdit.getActiveView()); + } +} +/** ***********************************************************************EOF */ + Added: plugins/CtagsSideKick/trunk/ctags/sidekick/options/IModeOptionPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/options/IModeOptionPane.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/options/IModeOptionPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,10 @@ +package ctags.sidekick.options; + +public interface IModeOptionPane { + // Mode has changed + void modeSelected(String mode); + // Save all changes (in all modes) + void save(); + // Reset current mode options to the defaults + void resetCurrentMode(); +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeCtagsInvocationPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeCtagsInvocationPane.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeCtagsInvocationPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,61 @@ +package ctags.sidekick.options; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.gjt.sp.jedit.jEdit; + +import ctags.sidekick.Plugin; + +@SuppressWarnings("serial") +public class ModeCtagsInvocationPane extends JPanel implements IModeOptionPane { + + static private final String CTAGS_MODE_OPTIONS_LABEL = "options.CtagsSideKick.mode.ctags_options_label"; + private JTextField ctagsOptions; + private HashMap<String, String> modeOptions; + private String mode; + + public ModeCtagsInvocationPane() { + JLabel optionsLabel = new JLabel(jEdit.getProperty(CTAGS_MODE_OPTIONS_LABEL)); + ctagsOptions = new JTextField(30); + add(optionsLabel); + add(ctagsOptions); + modeOptions = new HashMap<String, String>(); + mode = null; + } + + public void modeSelected(String mode) { + if (this.mode != null) + modeOptions.put(this.mode, ctagsOptions.getText()); + this.mode = mode; + String options = modeOptions.get(mode); + if (options == null) { + options = ModeOptionsPane.getProperty(mode, Plugin.CTAGS_MODE_OPTIONS); + modeOptions.put(mode, options); + } + ctagsOptions.setText(options); + } + + public void resetCurrentMode() { + String options = modeOptions.get(null); + modeOptions.put(mode, options); + ctagsOptions.setText(options); + } + + public void save() { + modeOptions.put(this.mode, ctagsOptions.getText()); + Iterator entries = modeOptions.entrySet().iterator(); + while (entries.hasNext()) { + Entry e = (Entry) entries.next(); + String mode = (String) e.getKey(); + String options = (String) e.getValue(); + ModeOptionsPane.setProperty(mode, Plugin.CTAGS_MODE_OPTIONS, options); + } + } + +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeMapperPane.java =================================================================== --- plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeMapperPane.java (rev 0) +++ plugins/CtagsSideKick/trunk/ctags/sidekick/options/ModeMapperPane.java 2007-09-16 22:59:22 UTC (rev 10587) @@ -0,0 +1,168 @@ +package ctags.sidekick.options; + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Vector; +import java.util.Map.Entry; + +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.border.TitledBorder; + +import org.gjt.sp.jedit.GUIUtilities; +import org.gjt.sp.jedit.gui.RolloverButton; + +import ctags.sidekick.MapperManager; +import ctags.sidekick.TreeMapperEditor; +import ctags.sidekick.mappers.ITreeMapper; +import ctags.sidekick.mappers.ListTreeMapper; + +@SuppressWarnings("serial") +public class ModeMapperPane extends JPanel implements IModeOptionPane { + JList mapperList; + DefaultListModel mapperModel; + HashMap<String, DefaultListModel> mapperModels; + JList componentList; + DefaultListModel componentListModel; + String mode; + + public ModeMapperPane() + { + setLayout(new BorderLayout()); + TitledBorder b = new TitledBorder("Grouping"); + + JPanel topPanel = new JPanel(new BorderLayout()); + topPanel.setBorder(b); + add(topPanel); + + mapperModels = new HashMap<String, DefaultListModel>(); + mapperList = new JList(); + mapperList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + topPanel.add(new JScrollPane(mapperList), BorderLayout.CENTER); + + JButton add = new RolloverButton(GUIUtilities.loadIcon("Plus.png")); + add.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + addMapper(); + } + }); + JButton remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png")); + remove.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + removeMapper(); + } + }); + JButton up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); + up.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + mapperUp(); + } + }); + JButton down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); + down.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + mapperDown(); + } + }); + + JPanel buttons = new JPanel(new GridLayout(1, 0)); + buttons.add(add); + buttons.add(remove); + buttons.add(up); + buttons.add(down); + topPanel.add(buttons, BorderLayout.SOUTH); + + mode = null; + } + + public void modeSelected(String mode) { + this.mode = mode; + mapperModel = getModelForMode(mode); + mapperModels.put(mode, mapperModel); + mapperList.setModel(mapperModel); + } + + private DefaultListModel getModelForMode(String mode) { + DefaultListModel model = mapperModels.get(mode); + if (model == null) + { + model = new DefaultListModel(); + ListTreeMapper mapper; + mapper = (ListTreeMapper) MapperManager.getMapperForMode(mode); + Vector<ITreeMapper> components = mapper.getComponents(); + for (int i = 0; i < components.size(); i++) + model.addElement(components.get(i)); + } + return model; + } + + protected void addMapper() { + ITreeMapper mapper = new TreeMapperEditor( + GUIUtilities.getParentDialog(this)).getMapper(); + if (mapper != null) { + int index = mapperList.getSelectedIndex(); + mapperModel.add(index + 1, mapper); + mapperList.setSelectedIndex(index + 1); + } + } + + protected void removeMapper() { + int index = mapperList.getSelectedIndex(); + if (index >= 0) { + mapperModel.remove(index); + if (index < mapperModel.size()) + mapperList.setSelectedIndex(index); + } + } + + private void mapperDown() { + int index = mapperList.getSelectedIndex(); + if (index < mapperModel.size() - 1) { + ITreeMapper current = (ITreeMapper) mapperModel.get(index); + ITreeMapper other = (ITreeMapper) mapperModel.get(index + 1); + mapperModel.set(index + 1, current); + mapperModel.set(index, other); + mapperList.setSelectedIndex(index + 1); + } + } + private void mapperUp() { + int index = mapperList.getSelectedIndex(); + if (index > 0) { + ITreeMapper current = (ITreeMapper) mapperModel.get(index); + ITreeMapper other = (ITreeMapper) mapperModel.get(index - 1); + mapperModel.set(index - 1, current); + mapperModel.set(index, other); + mapperList.setSelectedIndex(index - 1); + } + } + + public void save() + { + Iterator models = mapperModels.entrySet().iterator(); + while (models.hasNext()) { + Entry e = (Entry) models.next(); + String mode = (String) e.getKey(); + DefaultListModel model = (DefaultListModel) e.getValue(); + ListTreeMapper mapper = new ListTreeMapper(); + for (int i = 0; i < model.getSize(); i++) + mapper.add((ITreeMapper) model.get(i)); + MapperManager.setMapperForMode(mode, mapper); + } + } + + public void resetCurrentMode() { + DefaultListModel model = getModelForMode(null); + mapperModel.clear(); + for (int i = 0; i < model.size(); i++) + mapperModel.addElement(model.elementAt(i)); + } + +} Added: plugins/CtagsSideKick/trunk/ctags/sidekick/... [truncated message content] |