[ jEdit-commits ] SF.net SVN: jedit:[18289]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-03 20:54:58
|
Revision: 18289 http://jedit.svn.sourceforge.net/jedit/?rev=18289&view=rev Author: shlomy Date: 2010-08-03 20:54:51 +0000 (Tue, 03 Aug 2010) Log Message: ----------- Change the model; one of the panes shows the existing menus, the other should show all available (unused) actions. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-03 20:36:53 UTC (rev 18288) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-03 20:54:51 UTC (rev 18289) @@ -27,12 +27,12 @@ private static final String spaceSeparator = "\\s+"; private static final String menuSeparator = "-"; private static final String subMenu = "%"; - private JComboBox [] menu = new JComboBox[2]; - private JList [] items = new JList[2]; + private JComboBox menu; + private JList items, unusedItems; private JButton add, remove, up, down; private JButton ok, apply, cancel, restoreDefault; - private DefaultComboBoxModel [] menuModel = new DefaultComboBoxModel[2]; - private DefaultListModel [] itemModel = new DefaultListModel[2]; + private DefaultComboBoxModel menuModel; + private DefaultListModel itemModel, unusedModel; private ArrayList<MenuElement> menus = new ArrayList<MenuElement>(); public MenuEditor(View view) @@ -41,8 +41,12 @@ initMenuData(); JPanel contentPanel = new JPanel(new BorderLayout()); JPanel center = new JPanel(); - JPanel from = createPanel(0); - JPanel to = createPanel(1); + JPanel from = createPanel(); + JPanel to = new JPanel(new BorderLayout()); + to.add(new JLabel("Available items:"), BorderLayout.NORTH); + unusedModel = new DefaultListModel(); + unusedItems = new JList(unusedModel); + to.add(new JScrollPane(unusedItems), BorderLayout.CENTER); JPanel movePanel = new JPanel(new GridLayout(0, 1)); add = new JButton("Add"); remove = new JButton("Remove"); @@ -132,40 +136,40 @@ for (MenuElement menuElem: menus) resetMenu(menuElem); } - private JPanel createPanel(final int index) + private JPanel createPanel() { - menuModel[index] = new DefaultComboBoxModel(); + menuModel = new DefaultComboBoxModel(); for (MenuElement menuElem: menus) - menuModel[index].addElement(menuElem); - menu[index] = new JComboBox(menuModel[index]); - itemModel[index] = new DefaultListModel(); - updateItems(index, menus.get(0)); - items[index] = new JList(itemModel[index]); + menuModel.addElement(menuElem); + menu = new JComboBox(menuModel); + itemModel = new DefaultListModel(); + updateItems(menus.get(0)); + items = new JList(itemModel); JPanel p = new JPanel(new BorderLayout()); JPanel menuPanel = new JPanel(); menuPanel.add(new JLabel("menu:")); - menuPanel.add(menu[index]); + menuPanel.add(menu); JPanel itemPanel = new JPanel(new BorderLayout()); itemPanel.add(new JLabel("Items:"), BorderLayout.NORTH); - itemPanel.add(new JScrollPane(items[index]), BorderLayout.CENTER); + itemPanel.add(new JScrollPane(items), BorderLayout.CENTER); p.add(menuPanel, BorderLayout.NORTH); p.add(itemPanel, BorderLayout.CENTER); - menu[index].addItemListener(new ItemListener() { + menu.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() != ItemEvent.SELECTED) return; - updateItems(index, (MenuElement)e.getItem()); + updateItems((MenuElement)e.getItem()); } }); return p; } - private void updateItems(int index, MenuElement menuElem) + private void updateItems(MenuElement menuElem) { - itemModel[index].clear(); + itemModel.clear(); for (MenuElement child: menuElem.children) - itemModel[index].addElement(child); + itemModel.addElement(child); } private String [] getMenus() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18290]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-03 21:36:26
|
Revision: 18290 http://jedit.svn.sourceforge.net/jedit/?rev=18290&view=rev Author: shlomy Date: 2010-08-03 21:36:19 +0000 (Tue, 03 Aug 2010) Log Message: ----------- Implemented the action side. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-03 20:54:51 UTC (rev 18289) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-03 21:36:19 UTC (rev 18290) @@ -7,6 +7,11 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; + import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JButton; @@ -17,6 +22,8 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; +import org.gjt.sp.jedit.ActionSet; +import org.gjt.sp.jedit.EditAction; import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.jEdit; @@ -27,26 +34,26 @@ private static final String spaceSeparator = "\\s+"; private static final String menuSeparator = "-"; private static final String subMenu = "%"; - private JComboBox menu; + private JComboBox menu, actionSet; private JList items, unusedItems; private JButton add, remove, up, down; private JButton ok, apply, cancel, restoreDefault; - private DefaultComboBoxModel menuModel; + private DefaultComboBoxModel menuModel, actionSetModel; private DefaultListModel itemModel, unusedModel; private ArrayList<MenuElement> menus = new ArrayList<MenuElement>(); + private HashSet<String> used = new HashSet<String>(); + private HashMap<String, ArrayList<MenuElement>> unused = + new HashMap<String, ArrayList<MenuElement>>(); public MenuEditor(View view) { super(view, "Menu Editor"); initMenuData(); + initUnusedActions(); JPanel contentPanel = new JPanel(new BorderLayout()); JPanel center = new JPanel(); - JPanel from = createPanel(); - JPanel to = new JPanel(new BorderLayout()); - to.add(new JLabel("Available items:"), BorderLayout.NORTH); - unusedModel = new DefaultListModel(); - unusedItems = new JList(unusedModel); - to.add(new JScrollPane(unusedItems), BorderLayout.CENTER); + JPanel from = createMenuPanel(); + JPanel to = createActionPanel(); JPanel movePanel = new JPanel(new GridLayout(0, 1)); add = new JButton("Add"); remove = new JButton("Remove"); @@ -93,6 +100,44 @@ setVisible(true); } + private JPanel createActionPanel() + { + JPanel p = new JPanel(new BorderLayout()); + JPanel actionSetPanel = new JPanel(); + actionSetPanel.add(new JLabel("Action set:")); + actionSetModel = new DefaultComboBoxModel(); + ArrayList<String> actionSetNames = new ArrayList<String>(); + for (String actionSet: unused.keySet()) + actionSetNames.add(actionSet); + Collections.sort(actionSetNames); + for (String actionSet: actionSetNames) + actionSetModel.addElement(actionSet); + actionSet = new JComboBox(actionSetModel); + actionSetPanel.add(actionSet); + p.add(actionSetPanel, BorderLayout.NORTH); + JPanel actionPanel = new JPanel(new BorderLayout()); + actionPanel.add(new JLabel("Available items:"), BorderLayout.NORTH); + unusedModel = new DefaultListModel(); + updateActions((String)actionSetModel.getElementAt(0)); + unusedItems = new JList(unusedModel); + actionPanel.add(new JScrollPane(unusedItems), BorderLayout.CENTER); + p.add(actionPanel, BorderLayout.CENTER); + actionSet.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) + { + if (e.getStateChange() != ItemEvent.SELECTED) + return; + updateActions((String)e.getItem()); + } + }); + return p; + } + private void updateActions(String actionSet) + { + unusedModel.clear(); + for (MenuElement child: unused.get(actionSet)) + unusedModel.addElement(child); + } private void applyMenu(MenuElement menuElem) { ArrayList<String> children = new ArrayList<String>(); @@ -136,7 +181,7 @@ for (MenuElement menuElem: menus) resetMenu(menuElem); } - private JPanel createPanel() + private JPanel createMenuPanel() { menuModel = new DefaultComboBoxModel(); for (MenuElement menuElem: menus) @@ -202,6 +247,7 @@ boolean isMenu = item.startsWith(subMenu); if (isMenu) item = item.substring(1); + used.add(item); MenuElement child = parent.addChild(item); if (isMenu) initMenu(child); @@ -212,11 +258,39 @@ String [] menuIds = getMenus(); for (String menuId: menuIds) { + used.add(menuId); MenuElement menuElem = new MenuElement(menuId); menus.add(menuElem); initMenu(menuElem); } } + private void initUnusedActions() + { + ActionSet [] actionSets = jEdit.getActionSets(); + for (ActionSet set: actionSets) + { + ArrayList<MenuElement> children = new ArrayList<MenuElement>(); + EditAction [] actions = set.getActions(); + for (EditAction action: actions) + { + String name = action.getName(); + if (used.contains(name)) + continue; + children.add(new MenuElement(name)); + } + if (! children.isEmpty()) + { + Collections.sort(children, new Comparator<MenuElement>() { + public int compare(MenuElement o1, MenuElement o2) + { + return o1.label.compareTo(o2.label); + } + }); + String actionSetName = set.getLabel(); + unused.put(actionSetName, children); + } + } + } private static class MenuElement { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18292]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <kp...@us...> - 2010-08-04 12:36:47
|
Revision: 18292 http://jedit.svn.sourceforge.net/jedit/?rev=18292&view=rev Author: kpouer Date: 2010-08-04 12:36:41 +0000 (Wed, 04 Aug 2010) Log Message: ----------- changed the layout Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 05:27:32 UTC (rev 18291) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 12:36:41 UTC (rev 18292) @@ -1,7 +1,6 @@ package menuEditor; -import java.awt.BorderLayout; -import java.awt.GridLayout; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -12,15 +11,7 @@ import java.util.HashMap; import java.util.HashSet; -import javax.swing.DefaultComboBoxModel; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; +import javax.swing.*; import org.gjt.sp.jedit.ActionSet; import org.gjt.sp.jedit.EditAction; @@ -51,10 +42,11 @@ initMenuData(); initUnusedActions(); JPanel contentPanel = new JPanel(new BorderLayout()); - JPanel center = new JPanel(); + JPanel center = new JPanel(new BorderLayout(5,5)); JPanel from = createMenuPanel(); JPanel to = createActionPanel(); JPanel movePanel = new JPanel(new GridLayout(0, 1)); + movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); add = new JButton("Add"); remove = new JButton("Remove"); up = new JButton("Up"); @@ -63,9 +55,9 @@ movePanel.add(remove); movePanel.add(up); movePanel.add(down); - center.add(from); + center.add(from, BorderLayout.WEST); center.add(movePanel); - center.add(to); + center.add(to, BorderLayout.EAST); contentPanel.add(center, BorderLayout.CENTER); JPanel bottom = new JPanel(); ok = new JButton("Ok"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18294]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 16:59:44
|
Revision: 18294 http://jedit.svn.sourceforge.net/jedit/?rev=18294&view=rev Author: shlomy Date: 2010-08-04 16:59:38 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Implemented removal of items. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 14:32:32 UTC (rev 18293) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 16:59:38 UTC (rev 18294) @@ -6,6 +6,7 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -39,8 +40,7 @@ public MenuEditor(View view) { super(view, "Menu Editor"); - initMenuData(); - initUnusedActions(); + initData(); JPanel contentPanel = new JPanel(new BorderLayout()); JPanel center = new JPanel(new BorderLayout(5,5)); JPanel from = createMenuPanel(); @@ -49,6 +49,12 @@ movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); add = new JButton("Add"); remove = new JButton("Remove"); + remove.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + removeSelected(); + } + }); up = new JButton("Up"); down = new JButton("Down"); movePanel.add(add); @@ -61,6 +67,13 @@ contentPanel.add(center, BorderLayout.CENTER); JPanel bottom = new JPanel(); ok = new JButton("Ok"); + ok.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + apply(); + dispose(); + } + }); apply = new JButton("Apply"); apply.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -92,6 +105,18 @@ setVisible(true); } + private void initData() + { + initMenuData(); + initUnusedActions(); + } + private void removeSelected() + { + int [] selected = items.getSelectedIndices(); + MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); + parentMenu.removeChildren(selected); + updateItems(parentMenu); + } private JPanel createActionPanel() { JPanel p = new JPanel(new BorderLayout()); @@ -154,6 +179,7 @@ menuString.append(child); } jEdit.setProperty(menuElem.menu, menuString.toString()); + jEdit.saveSettings(); } private void apply() { @@ -172,6 +198,8 @@ { for (MenuElement menuElem: menus) resetMenu(menuElem); + initData(); + updateItems(menu.getSelectedItem()); } private JPanel createMenuPanel() { @@ -246,6 +274,8 @@ } private void initMenuData() { + used.clear(); + menus.clear(); String [] menuIds = getMenus(); for (String menuId: menuIds) { @@ -257,6 +287,7 @@ } private void initUnusedActions() { + unused.clear(); ActionSet [] actionSets = jEdit.getActionSets(); for (ActionSet set: actionSets) { @@ -304,5 +335,11 @@ children.add(childElem); return childElem; } + public void removeChildren(int [] indices) + { + Arrays.sort(indices); + for (int i = indices.length - 1; i >= 0; i--) + children.remove(indices[i]); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18295]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 17:05:40
|
Revision: 18295 http://jedit.svn.sourceforge.net/jedit/?rev=18295&view=rev Author: shlomy Date: 2010-08-04 17:05:34 +0000 (Wed, 04 Aug 2010) Log Message: ----------- A tiny fix. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 16:59:38 UTC (rev 18294) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 17:05:34 UTC (rev 18295) @@ -199,7 +199,7 @@ for (MenuElement menuElem: menus) resetMenu(menuElem); initData(); - updateItems(menu.getSelectedItem()); + updateItems((MenuElement) menu.getSelectedItem()); } private JPanel createMenuPanel() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18296]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 20:37:42
|
Revision: 18296 http://jedit.svn.sourceforge.net/jedit/?rev=18296&view=rev Author: shlomy Date: 2010-08-04 20:37:36 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Implemented the other buttons... Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 17:05:34 UTC (rev 18295) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 20:37:36 UTC (rev 18296) @@ -48,6 +48,12 @@ JPanel movePanel = new JPanel(new GridLayout(0, 1)); movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); add = new JButton("Add"); + add.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + addSelected(); + } + }); remove = new JButton("Remove"); remove.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -56,7 +62,19 @@ } }); up = new JButton("Up"); + up.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + moveSelected(true); + } + }); down = new JButton("Down"); + down.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + moveSelected(false); + } + }); movePanel.add(add); movePanel.add(remove); movePanel.add(up); @@ -110,6 +128,62 @@ initMenuData(); initUnusedActions(); } + private void moveSelected(boolean up) + { + int [] selected = items.getSelectedIndices(); + Arrays.sort(selected); + MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); + int [] moved = new int[selected.length]; + int movedIndex = 0; + int selCount = selected.length; + int itemCount = itemModel.getSize(); + int from, to, diff, move, limit; + if (up) + { + from = 0; + to = selCount; + diff = 1; + move = -1; + limit = 0; + } + else + { + from = selCount - 1; + to = -1; + diff = -1; + move = 1; + limit = itemCount - 1; + } + // Skip the items that can't move (items at list boundary) + while ((from != to) && (selected[from] == limit)) + { + moved[movedIndex++] = selected[from]; + from += diff; + limit += diff; + } + // Move the items that can move + for (; from != to; from += diff) + { + int i1 = selected[from]; + int i2 = i1 + move; + parentMenu.swapChildren(i1, i2); + moved[movedIndex++] = i2; + } + updateItems(parentMenu); + items.setSelectedIndices(moved); + } + private void addSelected() + { + MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); + int [] selected = unusedItems.getSelectedIndices(); + for (int i: selected) + { + MenuElement element = + (MenuElement) unusedItems.getModel().getElementAt(i); + parentMenu.addChild(element); + } + updateItems(parentMenu); + } private void removeSelected() { int [] selected = items.getSelectedIndices(); @@ -179,7 +253,6 @@ menuString.append(child); } jEdit.setProperty(menuElem.menu, menuString.toString()); - jEdit.saveSettings(); } private void apply() { @@ -329,11 +402,15 @@ } public MenuElement addChild(String child) { + MenuElement childElem = new MenuElement(child); + addChild(childElem); + return childElem; + } + public void addChild(MenuElement child) + { if (children == null) children = new ArrayList<MenuElement>(); - MenuElement childElem = new MenuElement(child); - children.add(childElem); - return childElem; + children.add(child); } public void removeChildren(int [] indices) { @@ -341,5 +418,13 @@ for (int i = indices.length - 1; i >= 0; i--) children.remove(indices[i]); } + public void swapChildren(int from, int to) + { + if ((children == null) || (children.size() <= Math.max(from, to))) + return; + MenuElement temp = children.get(from); + children.set(from, children.get(to)); + children.set(to, temp); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18297]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 20:58:44
|
Revision: 18297 http://jedit.svn.sourceforge.net/jedit/?rev=18297&view=rev Author: shlomy Date: 2010-08-04 20:58:37 +0000 (Wed, 04 Aug 2010) Log Message: ----------- 1. Fixed 'restore defaults'. 2. The right panel now shows all actions, not just those unused in menus. One may want the same action in two different menus. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 20:37:36 UTC (rev 18296) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 20:58:37 UTC (rev 18297) @@ -10,7 +10,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashMap; -import java.util.HashSet; import javax.swing.*; @@ -27,20 +26,18 @@ private static final String menuSeparator = "-"; private static final String subMenu = "%"; private JComboBox menu, actionSet; - private JList items, unusedItems; + private JList items, allActions; private JButton add, remove, up, down; private JButton ok, apply, cancel, restoreDefault; private DefaultComboBoxModel menuModel, actionSetModel; - private DefaultListModel itemModel, unusedModel; + private DefaultListModel itemModel, allActionsModel; private ArrayList<MenuElement> menus = new ArrayList<MenuElement>(); - private HashSet<String> used = new HashSet<String>(); - private HashMap<String, ArrayList<MenuElement>> unused = + private HashMap<String, ArrayList<MenuElement>> actionSetMap = new HashMap<String, ArrayList<MenuElement>>(); public MenuEditor(View view) { super(view, "Menu Editor"); - initData(); JPanel contentPanel = new JPanel(new BorderLayout()); JPanel center = new JPanel(new BorderLayout(5,5)); JPanel from = createMenuPanel(); @@ -118,6 +115,7 @@ bottom.add(cancel); bottom.add(restoreDefault); contentPanel.add(bottom, BorderLayout.SOUTH); + initData(); setContentPane(contentPanel); pack(); setVisible(true); @@ -126,7 +124,7 @@ private void initData() { initMenuData(); - initUnusedActions(); + initAllActions(); } private void moveSelected(boolean up) { @@ -175,11 +173,11 @@ private void addSelected() { MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); - int [] selected = unusedItems.getSelectedIndices(); + int [] selected = allActions.getSelectedIndices(); for (int i: selected) { MenuElement element = - (MenuElement) unusedItems.getModel().getElementAt(i); + (MenuElement) allActions.getModel().getElementAt(i); parentMenu.addChild(element); } updateItems(parentMenu); @@ -197,21 +195,14 @@ JPanel actionSetPanel = new JPanel(); actionSetPanel.add(new JLabel("Action set:")); actionSetModel = new DefaultComboBoxModel(); - ArrayList<String> actionSetNames = new ArrayList<String>(); - for (String actionSet: unused.keySet()) - actionSetNames.add(actionSet); - Collections.sort(actionSetNames); - for (String actionSet: actionSetNames) - actionSetModel.addElement(actionSet); actionSet = new JComboBox(actionSetModel); actionSetPanel.add(actionSet); p.add(actionSetPanel, BorderLayout.NORTH); JPanel actionPanel = new JPanel(new BorderLayout()); actionPanel.add(new JLabel("Available items:"), BorderLayout.NORTH); - unusedModel = new DefaultListModel(); - updateActions((String)actionSetModel.getElementAt(0)); - unusedItems = new JList(unusedModel); - actionPanel.add(new JScrollPane(unusedItems), BorderLayout.CENTER); + allActionsModel = new DefaultListModel(); + allActions = new JList(allActionsModel); + actionPanel.add(new JScrollPane(allActions), BorderLayout.CENTER); p.add(actionPanel, BorderLayout.CENTER); actionSet.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) @@ -225,9 +216,9 @@ } private void updateActions(String actionSet) { - unusedModel.clear(); - for (MenuElement child: unused.get(actionSet)) - unusedModel.addElement(child); + allActionsModel.clear(); + for (MenuElement child: actionSetMap.get(actionSet)) + allActionsModel.addElement(child); } private void applyMenu(MenuElement menuElem) { @@ -272,16 +263,12 @@ for (MenuElement menuElem: menus) resetMenu(menuElem); initData(); - updateItems((MenuElement) menu.getSelectedItem()); } private JPanel createMenuPanel() { menuModel = new DefaultComboBoxModel(); - for (MenuElement menuElem: menus) - menuModel.addElement(menuElem); menu = new JComboBox(menuModel); itemModel = new DefaultListModel(); - updateItems(menus.get(0)); items = new JList(itemModel); JPanel p = new JPanel(new BorderLayout()); JPanel menuPanel = new JPanel(); @@ -339,7 +326,6 @@ boolean isMenu = item.startsWith(subMenu); if (isMenu) item = item.substring(1); - used.add(item); MenuElement child = parent.addChild(item); if (isMenu) initMenu(child); @@ -347,20 +333,22 @@ } private void initMenuData() { - used.clear(); menus.clear(); String [] menuIds = getMenus(); for (String menuId: menuIds) { - used.add(menuId); MenuElement menuElem = new MenuElement(menuId); menus.add(menuElem); initMenu(menuElem); } + menuModel.removeAllElements(); + for (MenuElement menuElem: menus) + menuModel.addElement(menuElem); + updateItems(menus.get(0)); } - private void initUnusedActions() + private void initAllActions() { - unused.clear(); + actionSetMap.clear(); ActionSet [] actionSets = jEdit.getActionSets(); for (ActionSet set: actionSets) { @@ -369,8 +357,6 @@ for (EditAction action: actions) { String name = action.getName(); - if (used.contains(name)) - continue; children.add(new MenuElement(name)); } if (! children.isEmpty()) @@ -382,9 +368,17 @@ } }); String actionSetName = set.getLabel(); - unused.put(actionSetName, children); + actionSetMap.put(actionSetName, children); } } + ArrayList<String> actionSetNames = new ArrayList<String>(); + for (String actionSet: actionSetMap.keySet()) + actionSetNames.add(actionSet); + Collections.sort(actionSetNames); + actionSetModel.removeAllElements(); + for (String actionSet: actionSetNames) + actionSetModel.addElement(actionSet); + updateActions((String)actionSetModel.getElementAt(0)); } private static class MenuElement This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18298]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 21:09:00
|
Revision: 18298 http://jedit.svn.sourceforge.net/jedit/?rev=18298&view=rev Author: shlomy Date: 2010-08-04 21:08:54 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Ensure items remain selected and visible after moving up or down. Select item and make it visible when added to a menu. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 20:58:37 UTC (rev 18297) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 21:08:54 UTC (rev 18298) @@ -160,27 +160,37 @@ limit += diff; } // Move the items that can move + int firstMoved = -1; for (; from != to; from += diff) { int i1 = selected[from]; int i2 = i1 + move; + if (firstMoved == -1) + firstMoved = i2; parentMenu.swapChildren(i1, i2); moved[movedIndex++] = i2; } updateItems(parentMenu); items.setSelectedIndices(moved); + items.ensureIndexIsVisible(firstMoved); } private void addSelected() { MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); int [] selected = allActions.getSelectedIndices(); + if (selected.length == 0) + return; + int [] indices = new int[selected.length]; + int count = 0; for (int i: selected) { MenuElement element = (MenuElement) allActions.getModel().getElementAt(i); - parentMenu.addChild(element); + indices[count++] = parentMenu.addChild(element); } updateItems(parentMenu); + items.setSelectedIndices(indices); + items.ensureIndexIsVisible(indices[0]); } private void removeSelected() { @@ -400,11 +410,12 @@ addChild(childElem); return childElem; } - public void addChild(MenuElement child) + public int addChild(MenuElement child) { if (children == null) children = new ArrayList<MenuElement>(); children.add(child); + return children.size() - 1; } public void removeChildren(int [] indices) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18299]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-04 21:13:28
|
Revision: 18299 http://jedit.svn.sourceforge.net/jedit/?rev=18299&view=rev Author: shlomy Date: 2010-08-04 21:13:22 +0000 (Wed, 04 Aug 2010) Log Message: ----------- Position the dialog better. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 21:08:54 UTC (rev 18298) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-04 21:13:22 UTC (rev 18299) @@ -118,8 +118,8 @@ initData(); setContentPane(contentPanel); pack(); + setLocationRelativeTo(view); setVisible(true); - } private void initData() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18308]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-06 07:26:38
|
Revision: 18308 http://jedit.svn.sourceforge.net/jedit/?rev=18308&view=rev Author: shlomy Date: 2010-08-06 07:26:31 +0000 (Fri, 06 Aug 2010) Log Message: ----------- An initial (not working yet) implementation that allows DnD in the same list. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-05 21:33:21 UTC (rev 18307) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-06 07:26:31 UTC (rev 18308) @@ -1,10 +1,15 @@ package menuEditor; import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.io.IOException; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -35,6 +40,99 @@ private HashMap<String, ArrayList<MenuElement>> actionSetMap = new HashMap<String, ArrayList<MenuElement>>(); + public class ListTransferHandler extends TransferHandler + { + public class MenuElementTransferable implements Transferable + { + ArrayList<MenuElement> elements = new ArrayList<MenuElement>(); + @Override + public DataFlavor[] getTransferDataFlavors() + { + return new DataFlavor[]{ flavor }; + } + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) + { + return true; + } + @Override + public Object getTransferData(DataFlavor flavor) + throws UnsupportedFlavorException, IOException + { + return elements; + } + public void add(Object elem) + { + elements.add((MenuElement) elem); + } + } + + DataFlavor flavor = new DataFlavor(this.getClass(), "MenuElementFlavor"); + int [] indices; + + @Override + public boolean importData(TransferSupport support) + { + if (! support.isDrop()) + return false; + JList.DropLocation dl = + (JList.DropLocation) support.getDropLocation(); + int index = dl.getIndex(); + Object data; + try + { + data = support.getTransferable().getTransferData(flavor); + } + catch (Exception e) + { + e.printStackTrace(); + return false; + } + ArrayList<MenuElement> elements = (ArrayList<MenuElement>) data; + for (MenuElement element: elements) + itemModel.insertElementAt(element, index++); + if (indices != null) + { + for (int i = 0; i < indices.length; i++) + if (indices[i] >= index) + indices[i] += elements.size(); + } + return true; + } + + @Override + public boolean canImport(TransferSupport support) + { + return true; + } + + @Override + public int getSourceActions(JComponent c) + { + return TransferHandler.MOVE; + } + + @Override + protected Transferable createTransferable(JComponent c) + { + MenuElementTransferable t = new MenuElementTransferable(); + JList l = (JList) c; + indices = l.getSelectedIndices(); + for (int index: indices) + t.add(l.getModel().getElementAt(index)); + return t; + } + + @Override + protected void exportDone(JComponent source, Transferable data, + int action) + { + Arrays.sort(indices); + for (int i = indices.length - 1; i >= 0; i--) + itemModel.remove(indices[i]); + } + } + public MenuEditor(View view) { super(view, "Menu Editor"); @@ -280,6 +378,9 @@ menu = new JComboBox(menuModel); itemModel = new DefaultListModel(); items = new JList(itemModel); + items.setDragEnabled(true); + items.setDropMode(DropMode.INSERT); + items.setTransferHandler(new ListTransferHandler()); JPanel p = new JPanel(new BorderLayout()); JPanel menuPanel = new JPanel(); menuPanel.add(new JLabel("menu:")); @@ -391,7 +492,7 @@ updateActions((String)actionSetModel.getElementAt(0)); } - private static class MenuElement + private static class MenuElement implements Serializable { String menu, label; ArrayList<MenuElement> children; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18309]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-06 18:14:22
|
Revision: 18309 http://jedit.svn.sourceforge.net/jedit/?rev=18309&view=rev Author: shlomy Date: 2010-08-06 18:14:16 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Changed the way the items in the current menu are updated. Always update the model, and when switching to another menu or applying changes, update the menu element object. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-06 07:26:31 UTC (rev 18308) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-06 18:14:16 UTC (rev 18309) @@ -39,6 +39,7 @@ private ArrayList<MenuElement> menus = new ArrayList<MenuElement>(); private HashMap<String, ArrayList<MenuElement>> actionSetMap = new HashMap<String, ArrayList<MenuElement>>(); + private boolean itemListInitialized = false; public class ListTransferHandler extends TransferHandler { @@ -218,6 +219,7 @@ pack(); setLocationRelativeTo(view); setVisible(true); + itemListInitialized = true; } private void initData() { @@ -228,7 +230,6 @@ { int [] selected = items.getSelectedIndices(); Arrays.sort(selected); - MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); int [] moved = new int[selected.length]; int movedIndex = 0; int selCount = selected.length; @@ -265,10 +266,11 @@ int i2 = i1 + move; if (firstMoved == -1) firstMoved = i2; - parentMenu.swapChildren(i1, i2); + MenuElement tmp = (MenuElement) itemModel.get(i1); + itemModel.set(i1, itemModel.get(i2)); + itemModel.set(i2, tmp); moved[movedIndex++] = i2; } - updateItems(parentMenu); items.setSelectedIndices(moved); items.ensureIndexIsVisible(firstMoved); } @@ -293,9 +295,9 @@ private void removeSelected() { int [] selected = items.getSelectedIndices(); - MenuElement parentMenu = (MenuElement) menu.getSelectedItem(); - parentMenu.removeChildren(selected); - updateItems(parentMenu); + Arrays.sort(selected); + for (int i = selected.length - 1; i >= 0; i--) + itemModel.remove(i); } private JPanel createActionPanel() { @@ -355,6 +357,7 @@ } private void apply() { + updateMenuElement((MenuElement) menu.getSelectedItem()); for (MenuElement menuElem: menus) applyMenu(menuElem); } @@ -393,13 +396,27 @@ menu.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() != ItemEvent.SELECTED) - return; - updateItems((MenuElement)e.getItem()); + switch (e.getStateChange()) + { + case ItemEvent.SELECTED: + updateItems((MenuElement)e.getItem()); + break; + case ItemEvent.DESELECTED: + updateMenuElement((MenuElement)e.getItem()); + break; + } } }); return p; } + private void updateMenuElement(MenuElement menuElem) + { + if (! itemListInitialized) + return; + menuElem.removeAllChildren(); + for (int i = 0; i < itemModel.size(); i++) + menuElem.addChild((MenuElement) itemModel.elementAt(i)); + } private void updateItems(MenuElement menuElem) { itemModel.clear(); @@ -518,19 +535,9 @@ children.add(child); return children.size() - 1; } - public void removeChildren(int [] indices) + public void removeAllChildren() { - Arrays.sort(indices); - for (int i = indices.length - 1; i >= 0; i--) - children.remove(indices[i]); + children = null; } - public void swapChildren(int from, int to) - { - if ((children == null) || (children.size() <= Math.max(from, to))) - return; - MenuElement temp = children.get(from); - children.set(from, children.get(to)); - children.set(to, temp); - } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18310]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-07 05:40:49
|
Revision: 18310 http://jedit.svn.sourceforge.net/jedit/?rev=18310&view=rev Author: shlomy Date: 2010-08-07 05:40:43 +0000 (Sat, 07 Aug 2010) Log Message: ----------- When clicking 'apply' or 'ok', apply the menu changes immediately, including the current view. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-06 18:14:16 UTC (rev 18309) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 05:40:43 UTC (rev 18310) @@ -354,6 +354,7 @@ menuString.append(child); } jEdit.setProperty(menuElem.menu, menuString.toString()); + jEdit.propertiesChanged(); } private void apply() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18311]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-07 05:43:23
|
Revision: 18311 http://jedit.svn.sourceforge.net/jedit/?rev=18311&view=rev Author: shlomy Date: 2010-08-07 05:43:16 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Support dragging only of MenuElement objects. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 05:40:43 UTC (rev 18310) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 05:43:16 UTC (rev 18311) @@ -54,7 +54,7 @@ @Override public boolean isDataFlavorSupported(DataFlavor flavor) { - return true; + return (ListTransferHandler.this.flavor == flavor); } @Override public Object getTransferData(DataFlavor flavor) @@ -104,7 +104,7 @@ @Override public boolean canImport(TransferSupport support) { - return true; + return support.isDataFlavorSupported(flavor); } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18312]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-07 05:59:13
|
Revision: 18312 http://jedit.svn.sourceforge.net/jedit/?rev=18312&view=rev Author: shlomy Date: 2010-08-07 05:59:07 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Support dragging between the lists. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 05:43:16 UTC (rev 18311) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 05:59:07 UTC (rev 18312) @@ -104,13 +104,14 @@ @Override public boolean canImport(TransferSupport support) { - return support.isDataFlavorSupported(flavor); + return (support.getComponent() == items) && + (support.isDataFlavorSupported(flavor)); } @Override public int getSourceActions(JComponent c) { - return TransferHandler.MOVE; + return (c == items) ? TransferHandler.MOVE : TransferHandler.COPY; } @Override @@ -128,6 +129,8 @@ protected void exportDone(JComponent source, Transferable data, int action) { + if (source != items) + return; Arrays.sort(indices); for (int i = indices.length - 1; i >= 0; i--) itemModel.remove(indices[i]); @@ -312,6 +315,8 @@ actionPanel.add(new JLabel("Available items:"), BorderLayout.NORTH); allActionsModel = new DefaultListModel(); allActions = new JList(allActionsModel); + allActions.setDragEnabled(true); + allActions.setTransferHandler(new ListTransferHandler()); actionPanel.add(new JScrollPane(allActions), BorderLayout.CENTER); p.add(actionPanel, BorderLayout.CENTER); actionSet.addItemListener(new ItemListener() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18314]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-07 13:20:31
|
Revision: 18314 http://jedit.svn.sourceforge.net/jedit/?rev=18314&view=rev Author: shlomy Date: 2010-08-07 13:20:25 +0000 (Sat, 07 Aug 2010) Log Message: ----------- Replaced the labeled buttons with icons. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 12:17:53 UTC (rev 18313) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 13:20:25 UTC (rev 18314) @@ -20,8 +20,10 @@ import org.gjt.sp.jedit.ActionSet; import org.gjt.sp.jedit.EditAction; +import org.gjt.sp.jedit.GUIUtilities; import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.gui.RolloverButton; @SuppressWarnings("serial") public class MenuEditor extends JDialog @@ -32,7 +34,7 @@ private static final String subMenu = "%"; private JComboBox menu, actionSet; private JList items, allActions; - private JButton add, remove, up, down; + private RolloverButton add, remove, up, down; private JButton ok, apply, cancel, restoreDefault; private DefaultComboBoxModel menuModel, actionSetModel; private DefaultListModel itemModel, allActionsModel; @@ -52,28 +54,28 @@ JPanel to = createActionPanel(); JPanel movePanel = new JPanel(new GridLayout(0, 1)); movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); - add = new JButton("Add"); + add = new RolloverButton(GUIUtilities.loadIcon("ArrowL.png")); + remove = new RolloverButton(GUIUtilities.loadIcon("ArrowR.png")); + up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); + down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addSelected(); } }); - remove = new JButton("Remove"); remove.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { removeSelected(); } }); - up = new JButton("Up"); up.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { moveSelected(true); } }); - down = new JButton("Down"); down.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18316]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-08 11:44:45
|
Revision: 18316 http://jedit.svn.sourceforge.net/jedit/?rev=18316&view=rev Author: shlomy Date: 2010-08-08 11:44:39 +0000 (Sun, 08 Aug 2010) Log Message: ----------- Improved the UI a bit - the Add/Remove/Up/Down buttons are attached to the list of menu items. Fixed a bug when using the Remove button to remove menu items - it operated on the wrong indexes. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-07 14:36:51 UTC (rev 18315) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-08 11:44:39 UTC (rev 18316) @@ -49,45 +49,10 @@ JPanel contentPanel = new JPanel(new BorderLayout(5,5)); contentPanel.add(new JLabel(jEdit.getProperty("menu-editor.help")), BorderLayout.NORTH); - JPanel center = new JPanel(new BorderLayout(5,5)); JPanel from = createMenuPanel(); JPanel to = createActionPanel(); - JPanel movePanel = new JPanel(new GridLayout(0, 1)); - movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); - add = new RolloverButton(GUIUtilities.loadIcon("ArrowL.png")); - remove = new RolloverButton(GUIUtilities.loadIcon("ArrowR.png")); - up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); - down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); - add.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) - { - addSelected(); - } - }); - remove.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) - { - removeSelected(); - } - }); - up.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) - { - moveSelected(true); - } - }); - down.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) - { - moveSelected(false); - } - }); - movePanel.add(add); - movePanel.add(remove); - movePanel.add(up); - movePanel.add(down); + JPanel center = new JPanel(new BorderLayout(5, 5)); center.add(from, BorderLayout.WEST); - center.add(movePanel); center.add(to, BorderLayout.EAST); contentPanel.add(center, BorderLayout.CENTER); JPanel bottom = new JPanel(); @@ -208,7 +173,7 @@ int [] selected = items.getSelectedIndices(); Arrays.sort(selected); for (int i = selected.length - 1; i >= 0; i--) - itemModel.remove(i); + itemModel.remove(selected[i]); } private JPanel createActionPanel() { @@ -305,6 +270,41 @@ JPanel itemPanel = new JPanel(new BorderLayout()); itemPanel.add(new JLabel("Items:"), BorderLayout.NORTH); itemPanel.add(new JScrollPane(items), BorderLayout.CENTER); + JPanel movePanel = new JPanel(new GridLayout(0, 1)); + movePanel.setLayout(new BoxLayout(movePanel, BoxLayout.Y_AXIS)); + itemPanel.add(movePanel, BorderLayout.EAST); + add = new RolloverButton(GUIUtilities.loadIcon("ArrowL.png")); + remove = new RolloverButton(GUIUtilities.loadIcon("ArrowR.png")); + up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); + down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); + add.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + addSelected(); + } + }); + remove.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + removeSelected(); + } + }); + up.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + moveSelected(true); + } + }); + down.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + moveSelected(false); + } + }); + movePanel.add(add); + movePanel.add(remove); + movePanel.add(up); + movePanel.add(down); p.add(menuPanel, BorderLayout.NORTH); p.add(itemPanel, BorderLayout.CENTER); menu.addItemListener(new ItemListener() { @@ -459,17 +459,14 @@ public class MenuElementTransferable implements Transferable { ArrayList<MenuElement> elements = new ArrayList<MenuElement>(); - @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[]{ flavor }; } - @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return (ListTransferHandler.this.flavor == flavor); } - @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18341]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-13 03:34:06
|
Revision: 18341 http://jedit.svn.sourceforge.net/jedit/?rev=18341&view=rev Author: shlomy Date: 2010-08-13 03:34:00 +0000 (Fri, 13 Aug 2010) Log Message: ----------- small GUI improvement Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-13 03:22:22 UTC (rev 18340) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-13 03:34:00 UTC (rev 18341) @@ -320,11 +320,14 @@ private JPanel createActionPanel() { JPanel p = new JPanel(new BorderLayout()); - JPanel actionSetPanel = new JPanel(); - actionSetPanel.add(new JLabel(getProp("menu-editor.actionSet"))); + JPanel actionSetPanel = new JPanel(new BorderLayout()); + actionSetPanel.add(new JLabel(getProp("menu-editor.actionSet")), + BorderLayout.WEST); actionSetModel = new DefaultComboBoxModel(); actionSet = new JComboBox(actionSetModel); - actionSetPanel.add(actionSet); + JPanel actionSetComboPanel = new JPanel(new BorderLayout()); + actionSetComboPanel.add(actionSet, BorderLayout.WEST); + actionSetPanel.add(actionSetComboPanel, BorderLayout.CENTER); p.add(actionSetPanel, BorderLayout.NORTH); JPanel actionPanel = new JPanel(new BorderLayout()); actionPanel.add(new JLabel(getProp("menu-editor.actionSetItems")), @@ -400,9 +403,12 @@ items.setDropMode(DropMode.INSERT); items.setTransferHandler(new ListTransferHandler()); JPanel p = new JPanel(new BorderLayout()); - JPanel menuPanel = new JPanel(); - menuPanel.add(new JLabel(getProp("menu-editor.menu"))); - menuPanel.add(menu); + JPanel menuPanel = new JPanel(new BorderLayout()); + menuPanel.add(new JLabel(getProp("menu-editor.menu")), + BorderLayout.WEST); + JPanel menuComboPanel = new JPanel(new BorderLayout()); + menuComboPanel.add(menu, BorderLayout.WEST); + menuPanel.add(menuComboPanel, BorderLayout.CENTER); JPanel itemPanel = new JPanel(new BorderLayout()); itemPanel.add(new JLabel(getProp("menu-editor.items")), BorderLayout.NORTH); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18346]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-14 20:12:47
|
Revision: 18346 http://jedit.svn.sourceforge.net/jedit/?rev=18346&view=rev Author: shlomy Date: 2010-08-14 20:12:41 +0000 (Sat, 14 Aug 2010) Log Message: ----------- Added a separator button, to allow adding separators to the menu. For now, the button is not dragable and just adds a separator at the end of the menu. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-14 16:03:58 UTC (rev 18345) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-14 20:12:41 UTC (rev 18346) @@ -50,6 +50,7 @@ private JComboBox menu, actionSet; private JList items, allActions; private RolloverButton add, remove, up, down; + private JButton separator; private JButton ok, apply, cancel, restoreDefault; private DefaultComboBoxModel menuModel, actionSetModel; private DefaultListModel itemModel, allActionsModel; @@ -317,6 +318,13 @@ for (int i = selected.length - 1; i >= 0; i--) itemModel.remove(selected[i]); } + private void appendSeparator() + { + itemModel.addElement(new MenuElement(menuSeparator)); + int index = itemModel.getSize() - 1; + items.setSelectedIndices(new int[]{index}); + items.ensureIndexIsVisible(index); + } private JPanel createActionPanel() { JPanel p = new JPanel(new BorderLayout()); @@ -420,6 +428,7 @@ remove = new RolloverButton(GUIUtilities.loadIcon("ArrowR.png")); up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); + separator = new JButton("Separator"); add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -444,10 +453,17 @@ moveSelected(false); } }); + separator.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + appendSeparator(); + } + }); movePanel.add(add); movePanel.add(remove); movePanel.add(up); movePanel.add(down); + movePanel.add(separator); p.add(menuPanel, BorderLayout.NORTH); p.add(itemPanel, BorderLayout.CENTER); menu.addItemListener(new ItemListener() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18348]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-16 04:11:55
|
Revision: 18348 http://jedit.svn.sourceforge.net/jedit/?rev=18348&view=rev Author: shlomy Date: 2010-08-16 04:11:48 +0000 (Mon, 16 Aug 2010) Log Message: ----------- Allow dragging a separator from the separator button. Unfortunately, this prevents the button from functioning as a button, only dragging is supported. Need to fix this. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-15 06:31:12 UTC (rev 18347) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-16 04:11:48 UTC (rev 18348) @@ -8,6 +8,8 @@ import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -23,6 +25,7 @@ import java.util.HashMap; import javax.swing.*; +import javax.swing.TransferHandler.TransferSupport; import jdiff.util.Diff; import jdiff.util.DiffNormalOutput; @@ -59,6 +62,8 @@ new HashMap<String, ArrayList<MenuElement>>(); private boolean itemListInitialized = false; private static File home; + private DataFlavor flavor = new DataFlavor( + this.getClass(), "MenuElementFlavor"); public static void start() { @@ -459,6 +464,8 @@ appendSeparator(); } }); + separator.setTransferHandler(new SeparatorTransferHandler()); + separator.addMouseListener(new SeparatorMouseListener()); movePanel.add(add); movePanel.add(remove); movePanel.add(up); @@ -620,31 +627,30 @@ return copy; } } - public class ListTransferHandler extends TransferHandler + public class MenuElementTransferable implements Transferable { - public class MenuElementTransferable implements Transferable + ArrayList<MenuElement> elements = new ArrayList<MenuElement>(); + public DataFlavor[] getTransferDataFlavors() { - ArrayList<MenuElement> elements = new ArrayList<MenuElement>(); - public DataFlavor[] getTransferDataFlavors() - { - return new DataFlavor[]{ flavor }; - } - public boolean isDataFlavorSupported(DataFlavor flavor) - { - return (ListTransferHandler.this.flavor == flavor); - } - public Object getTransferData(DataFlavor flavor) - throws UnsupportedFlavorException, IOException - { - return elements; - } - public void add(Object elem) - { - elements.add((MenuElement) elem); - } + return new DataFlavor[]{ flavor }; } + public boolean isDataFlavorSupported(DataFlavor flavor) + { + return (MenuEditor.this.flavor == flavor); + } + public Object getTransferData(DataFlavor flavor) + throws UnsupportedFlavorException, IOException + { + return elements; + } + public void add(Object elem) + { + elements.add((MenuElement) elem); + } + } - DataFlavor flavor = new DataFlavor(this.getClass(), "MenuElementFlavor"); + public class ListTransferHandler extends TransferHandler + { int [] indices; @Override @@ -712,4 +718,37 @@ itemModel.remove(indices[i]); } } + private class SeparatorTransferHandler extends TransferHandler + { + @Override + public boolean canImport(TransferSupport support) + { + return false; + } + + @Override + public int getSourceActions(JComponent c) + { + return TransferHandler.COPY; + } + + @Override + protected Transferable createTransferable(JComponent c) + { + MenuElementTransferable t = new MenuElementTransferable(); + t.add(new MenuElement(menuSeparator)); + return t; + } + + } + private class SeparatorMouseListener extends MouseAdapter + { + @Override + public void mousePressed(MouseEvent e) + { + JComponent c = (JComponent) e.getSource(); + TransferHandler handler = c.getTransferHandler(); + handler.exportAsDrag(c, e, TransferHandler.COPY); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18386]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-18 20:12:48
|
Revision: 18386 http://jedit.svn.sourceforge.net/jedit/?rev=18386&view=rev Author: shlomy Date: 2010-08-18 20:12:42 +0000 (Wed, 18 Aug 2010) Log Message: ----------- Allow the separator button to serve as both a button (for appending the separator to the list) and a drag source. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-18 19:29:04 UTC (rev 18385) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-18 20:12:42 UTC (rev 18386) @@ -25,7 +25,6 @@ import java.util.HashMap; import javax.swing.*; -import javax.swing.TransferHandler.TransferSupport; import jdiff.util.Diff; import jdiff.util.DiffNormalOutput; @@ -723,10 +722,19 @@ @Override public boolean canImport(TransferSupport support) { - return false; + return true; } @Override + public boolean importData(TransferSupport support) + { + if (! support.isDrop()) + return false; + appendSeparator(); + return true; + } + + @Override public int getSourceActions(JComponent c) { return TransferHandler.COPY; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18429]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-27 12:44:37
|
Revision: 18429 http://jedit.svn.sourceforge.net/jedit/?rev=18429&view=rev Author: shlomy Date: 2010-08-27 12:44:27 +0000 (Fri, 27 Aug 2010) Log Message: ----------- Another small fix - new menus have no property with their items, so don't ignore the diff file. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-27 11:36:15 UTC (rev 18428) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-27 12:44:27 UTC (rev 18429) @@ -129,7 +129,7 @@ if (! new File(diffFile).exists()) return; if (items == null) - return; + items = new String [0]; String diff = readFile(diffFile); String patched; try This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
[ jEdit-commits ] SF.net SVN: jedit:[18431]
plugins/MenuEditor/trunk/src/menuEditor/ MenuEditor.java
From: <sh...@us...> - 2010-08-27 14:19:40
|
Revision: 18431 http://jedit.svn.sourceforge.net/jedit/?rev=18431&view=rev Author: shlomy Date: 2010-08-27 14:19:34 +0000 (Fri, 27 Aug 2010) Log Message: ----------- Implement up & down buttons in menu bar editor. Modified Paths: -------------- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java Modified: plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-27 13:59:57 UTC (rev 18430) +++ plugins/MenuEditor/trunk/src/menuEditor/MenuEditor.java 2010-08-27 14:19:34 UTC (rev 18431) @@ -889,6 +889,20 @@ remove(); } }); + up.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + moveSelected(true); + } + }); + down.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + moveSelected(false); + } + }); ok = new JButton(getProp("menu-editor.ok")); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -943,16 +957,60 @@ MenuElement toAdd = new MenuElement(menuEditorPrefix + newMenu, newMenu); int sel = menus.getSelectedIndex(); - if (sel == -1) - model.addElement(toAdd); - else - model.add(sel + 1, toAdd); + model.add(sel + 1, toAdd); // If no selection, add at beginning } private void remove() { int [] sel = menus.getSelectedIndices(); for (int i = sel.length - 1; i >=0; i--) - model.remove(i); + model.remove(sel[i]); } + private void moveSelected(boolean up) + { + int [] selected = menus.getSelectedIndices(); + int [] moved = new int[selected.length]; + int movedIndex = 0; + int selCount = selected.length; + int itemCount = model.getSize(); + int from, to, diff, move, limit; + if (up) + { + from = 0; + to = selCount; + diff = 1; + move = -1; + limit = 0; + } + else + { + from = selCount - 1; + to = -1; + diff = -1; + move = 1; + limit = itemCount - 1; + } + // Skip the items that can't move (items at list boundary) + while ((from != to) && (selected[from] == limit)) + { + moved[movedIndex++] = selected[from]; + from += diff; + limit += diff; + } + // Move the items that can move + int firstMoved = -1; + for (; from != to; from += diff) + { + int i1 = selected[from]; + int i2 = i1 + move; + if (firstMoved == -1) + firstMoved = i2; + MenuElement tmp = (MenuElement) model.get(i1); + model.set(i1, model.get(i2)); + model.set(i2, tmp); + moved[movedIndex++] = i2; + } + menus.setSelectedIndices(moved); + menus.ensureIndexIsVisible(firstMoved); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |