From: <el...@us...> - 2010-08-27 00:08:30
|
Revision: 18423 http://jedit.svn.sourceforge.net/jedit/?rev=18423&view=rev Author: elberry Date: 2010-08-27 00:08:24 +0000 (Fri, 27 Aug 2010) Log Message: ----------- Merging fixes in from trunk. Modified Paths: -------------- plugins/MenuEditor/tags/release-0-2/MenuEditor.props plugins/MenuEditor/tags/release-0-2/TODO.txt plugins/MenuEditor/tags/release-0-2/build.xml plugins/MenuEditor/tags/release-0-2/src/menuEditor/MenuEditor.java Added Paths: ----------- plugins/MenuEditor/tags/release-0-2/docs/ plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html Removed Paths: ------------- plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html Property Changed: ---------------- plugins/MenuEditor/tags/release-0-2/ Property changes on: plugins/MenuEditor/tags/release-0-2 ___________________________________________________________________ Added: svn:mergeinfo + /plugins/MenuEditor/trunk:18388-18422 Modified: plugins/MenuEditor/tags/release-0-2/MenuEditor.props =================================================================== --- plugins/MenuEditor/tags/release-0-2/MenuEditor.props 2010-08-27 00:07:20 UTC (rev 18422) +++ plugins/MenuEditor/tags/release-0-2/MenuEditor.props 2010-08-27 00:08:24 UTC (rev 18423) @@ -3,19 +3,20 @@ # general plugin information plugin.menuEditor.MenuEditorPlugin.name=Menu Editor plugin.menuEditor.MenuEditorPlugin.author=Shlomy Reinstein -plugin.menuEditor.MenuEditorPlugin.version=0.2 +plugin.menuEditor.MenuEditorPlugin.version=0.3 plugin.menuEditor.MenuEditorPlugin.description=Allow editing of jEdit menus plugin.menuEditor.MenuEditorPlugin.depend.0=jdk 1.6 -plugin.menuEditor.MenuEditorPlugin.depend.1=jedit 04.04.01.00 +plugin.menuEditor.MenuEditorPlugin.depend.1=jedit 04.03.99.00 plugin.menuEditor.MenuEditorPlugin.depend.2=plugin jdiff.JDiffPlugin 3.1.0 -plugin.menuEditor.MenuEditorPlugin.docs=description.html +plugin.menuEditor.MenuEditorPlugin.docs=docs/MenuEditor.html plugin.menuEditor.MenuEditorPlugin.menu-item=menu-editor # actions menu-editor.label=Menu Editor +menu-editor.menuBarEditor.title=Menu Bar Editor # Strings menu-editor.help=To change menus, use the buttons or drag & drop. @@ -28,4 +29,5 @@ menu-editor.actionSetItems=Available items: menu-editor.menu=Menu: menu-editor.items=Items: - +menu-editor.editMenuBar=Edit the Menu Bar +menu-editor.bar=Menus: Modified: plugins/MenuEditor/tags/release-0-2/TODO.txt =================================================================== --- plugins/MenuEditor/tags/release-0-2/TODO.txt 2010-08-27 00:07:20 UTC (rev 18422) +++ plugins/MenuEditor/tags/release-0-2/TODO.txt 2010-08-27 00:08:24 UTC (rev 18423) @@ -2,6 +2,7 @@ - Show also the actual text of each action in the "Available actions" part. Sometimes "New" doesn't mean much - new view, new buffer, new dockable instance? -- Allow adding menu separators. -- Allow adding new menus (not menu items). ++ Allow adding menu separators. +--> Allow adding new menus (not menu items). + * applyDiff should also work on the menu bar. + Use a single menu item rather than the plugin's menu with a single item. \ No newline at end of file Modified: plugins/MenuEditor/tags/release-0-2/build.xml =================================================================== --- plugins/MenuEditor/tags/release-0-2/build.xml 2010-08-27 00:07:20 UTC (rev 18422) +++ plugins/MenuEditor/tags/release-0-2/build.xml 2010-08-27 00:08:24 UTC (rev 18423) @@ -7,7 +7,9 @@ <property file="build.properties"/> <property file="../build.properties"/> + <property name="docs-proc.target" value="none" /> + <property file="build.support" value="../build-support" /> <import file="${build.support}/plugin-build.xml" /> @@ -15,7 +17,7 @@ <selector id="packageFiles"> <or> - <filename name="description.html" /> + <filename name="docs/MenuEditor.html" /> </or> </selector> Deleted: plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html =================================================================== --- plugins/MenuEditor/trunk/docs/MenuEditor.html 2010-08-27 00:07:20 UTC (rev 18422) +++ plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html 2010-08-27 00:08:24 UTC (rev 18423) @@ -1,58 +0,0 @@ -<html> -<title>The Menu Editor Plugin</title> -<body> -<h1>Menu Editor</h1> -<p><i>Written by Shlomy Reinstein, August 2010.</i></p> -<p> -The Menu Editor plugin allows you to rearrange the jEdit menu -(File/Edit/Search...), shown at the top of each view. You can -rearrange the items in each menu, remove items from a menu, -or add items to a menu. -</p> -<p> -The plugin provides a single dialog, which you can open using -the plugin menu. The dialog shows the current menus on the left, -and the available actions on the right. For each of the two, -there is a combo-box at the top using which you choose the menu -or action set, and a list below it showing the items of the -selected menu or the actions in the selected action set. -</p> -<p> -To re-order items in a specific menu, select the items you want -to move (multiple selection is allowed) and either use -the up/down buttons to move them, or drag them to the -desired position in the list. -</p> -<p> -To remove items from a menu, select the items, and click the -right-arrow button, or simply drag them outside the list. -</p> -<p> -To add actions to a menu, select the actions from the list on -the right, and either click the left-arrow button or simply -drag them to the list of menu items. -</p> -<p> -The buttons at the bottom of the dialog: -<ul> -<li>Ok: Apply the changes made in this dialog and close the -dialog. -<li>Apply: Apply the changes made in this dialog, but keep -the dialog open for making more changes. -<li>Cancel: Discard the changes made in this dialog (since -the last time you clicked Apply, if you did) and close the -dialog. -<li>Restore default: Restore the menus to their original -contents (the way they are provided with jEdit, with no -modifications), and keep the dialog open for making -changes. -</ul> -</p> -<p> -The plugin stores the list of changes that were made to the -menus, and re-applies them each time jEdit is started. This -way, you don't miss changes made by future versions of -jEdit (such as new menu items). -</p> -</body> -</html> Copied: plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html (from rev 18422, plugins/MenuEditor/trunk/docs/MenuEditor.html) =================================================================== --- plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html (rev 0) +++ plugins/MenuEditor/tags/release-0-2/docs/MenuEditor.html 2010-08-27 00:08:24 UTC (rev 18423) @@ -0,0 +1,58 @@ +<html> +<title>The Menu Editor Plugin</title> +<body> +<h1>Menu Editor</h1> +<p><i>Written by Shlomy Reinstein, August 2010.</i></p> +<p> +The Menu Editor plugin allows you to rearrange the jEdit menu +(File/Edit/Search...), shown at the top of each view. You can +rearrange the items in each menu, remove items from a menu, +or add items to a menu. +</p> +<p> +The plugin provides a single dialog, which you can open using +the plugin menu. The dialog shows the current menus on the left, +and the available actions on the right. For each of the two, +there is a combo-box at the top using which you choose the menu +or action set, and a list below it showing the items of the +selected menu or the actions in the selected action set. +</p> +<p> +To re-order items in a specific menu, select the items you want +to move (multiple selection is allowed) and either use +the up/down buttons to move them, or drag them to the +desired position in the list. +</p> +<p> +To remove items from a menu, select the items, and click the +right-arrow button, or simply drag them outside the list. +</p> +<p> +To add actions to a menu, select the actions from the list on +the right, and either click the left-arrow button or simply +drag them to the list of menu items. +</p> +<p> +The buttons at the bottom of the dialog: +<ul> +<li>Ok: Apply the changes made in this dialog and close the +dialog. +<li>Apply: Apply the changes made in this dialog, but keep +the dialog open for making more changes. +<li>Cancel: Discard the changes made in this dialog (since +the last time you clicked Apply, if you did) and close the +dialog. +<li>Restore default: Restore the menus to their original +contents (the way they are provided with jEdit, with no +modifications), and keep the dialog open for making +changes. +</ul> +</p> +<p> +The plugin stores the list of changes that were made to the +menus, and re-applies them each time jEdit is started. This +way, you don't miss changes made by future versions of +jEdit (such as new menu items). +</p> +</body> +</html> Modified: plugins/MenuEditor/tags/release-0-2/src/menuEditor/MenuEditor.java =================================================================== --- plugins/MenuEditor/tags/release-0-2/src/menuEditor/MenuEditor.java 2010-08-27 00:07:20 UTC (rev 18422) +++ plugins/MenuEditor/tags/release-0-2/src/menuEditor/MenuEditor.java 2010-08-27 00:08:24 UTC (rev 18423) @@ -63,6 +63,7 @@ private static File home; private DataFlavor flavor = new DataFlavor( this.getClass(), "MenuElementFlavor"); + private JButton editMenuBar; public static void start() { @@ -120,38 +121,44 @@ sb.append(line + separator); return sb.toString(); } + private static void applyPropertyDiff(String diffFile, + String [] items, String property) + { + if (! new File(diffFile).exists()) + return; + if (items == null) + return; + String diff = readFile(diffFile); + String patched; + try + { + patched = Patch.patchNormal(diff, join(items, '\n')); + } + catch (Exception e) + { + e.printStackTrace(); + return; + } + String newMenu = join(patched.split("\n"), ' '); + jEdit.setProperty(property, newMenu); + } private static void applyDiff() { String diffPath = home.getAbsolutePath() + File.separator; - for (String menu: unchangedMenus) + applyPropertyDiff(diffPath + "mbar.diff", unchangedMenus, viewMenuBar); + String [] menus = getMenus(); + for (String menu: menus) { String diffFile = diffPath + menu + ".diff"; - if (! new File(diffFile).exists()) - continue; - String [] items = unchangedMenuItems.get(menu); - if (items == null) - continue; - String diff = readFile(diffFile); - String patched; - try - { - patched = Patch.patchNormal(diff, join(items, '\n')); - } catch (Exception e) - { - e.printStackTrace(); - continue; - } - String newMenu = join(patched.split("\n"), ' '); - jEdit.setProperty(menu, newMenu); + String [] unchangedItems = unchangedMenuItems.get(menu); + applyPropertyDiff(diffFile, unchangedItems, menu); } jEdit.propertiesChanged(); } - private void createDiff(MenuElement menuElem) + private void createPropertyDiff(String diffFile, String [] orig, + String [] modified, String property) { - String menu = menuElem.menu; - jEdit.resetProperty(getMenuPropName(menu)); - String [] orig = unchangedMenuItems.get(menu); - String [] modified = menuElem.getChildren(); + jEdit.resetProperty(property); Diff diff = new Diff(orig, modified); Change edit = diff.diff_2(); StringWriter sw = new StringWriter(); @@ -161,8 +168,6 @@ try { diffOutput.writeScript(edit); - String diffPath = home.getAbsolutePath() + File.separator; - String diffFile = diffPath + menu + ".diff"; writeFile(diffFile, sw.toString()); } catch (Exception e) @@ -171,6 +176,16 @@ return; } } + private void createDiff(MenuElement menuElem) + { + String menu = menuElem.menu; + String property = getMenuPropName(menu); + String diffPath = home.getAbsolutePath() + File.separator; + String diffFile = diffPath + menu + ".diff"; + String [] orig = unchangedMenuItems.get(menu); + String [] modified = menuElem.getChildren(); + createPropertyDiff(diffFile, orig, modified, property); + } private static void resetAllMenus() { jEdit.resetProperty(viewMenuBar); @@ -194,8 +209,21 @@ { super(view, getProp("menu-editor.dialog.title")); JPanel contentPanel = new JPanel(new BorderLayout(5,5)); - contentPanel.add(new JLabel(jEdit.getProperty("menu-editor.help")), - BorderLayout.NORTH); + JPanel northPanel = new JPanel(new BorderLayout()); + JPanel menuBarPanel = new JPanel(); + editMenuBar = new JButton(getProp("menu-editor.editMenuBar")); + editMenuBar.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + editMenuBar(); + } + }); + menuBarPanel.add(editMenuBar); + northPanel.add(menuBarPanel, BorderLayout.NORTH); + northPanel.add(new JLabel(jEdit.getProperty("menu-editor.help")), + BorderLayout.CENTER); + contentPanel.add(northPanel, BorderLayout.NORTH); JPanel from = createMenuPanel(); JPanel to = createActionPanel(); JPanel center = new JPanel(new BorderLayout(5, 5)); @@ -244,6 +272,10 @@ setVisible(true); itemListInitialized = true; } + private void editMenuBar() + { + new MenuBarEditor(this); + } private void initData() { initMenuData(); @@ -322,10 +354,21 @@ for (int i = selected.length - 1; i >= 0; i--) itemModel.remove(selected[i]); } - private void appendSeparator() + private void insertSeparator() { - itemModel.addElement(new MenuElement(menuSeparator)); - int index = itemModel.getSize() - 1; + MenuElement separatorElement = new MenuElement(menuSeparator); + int [] sel = items.getSelectedIndices(); + int index; + if (sel.length <= 0) + { + itemModel.addElement(separatorElement); + index = itemModel.getSize() - 1; + } + else + { + index = sel[sel.length - 1] + 1; + itemModel.add(index, separatorElement); + } items.setSelectedIndices(new int[]{index}); items.ensureIndexIsVisible(index); } @@ -460,7 +503,7 @@ separator.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - appendSeparator(); + insertSeparator(); } }); separator.setTransferHandler(new SeparatorTransferHandler()); @@ -730,7 +773,7 @@ { if (! support.isDrop()) return false; - appendSeparator(); + insertSeparator(); return true; } @@ -759,4 +802,90 @@ handler.exportAsDrag(c, e, TransferHandler.COPY); } } + + public class MenuBarEditor extends JDialog + { + JList menus; + DefaultListModel model; + RolloverButton up, down, add, remove; + JButton ok, cancel; + + public MenuBarEditor(JDialog parent) + { + super(parent, getProp("menu-editor.menuBarEditor.title"), true); + JPanel contentPanel = new JPanel(new BorderLayout(5,5)); + contentPanel.add(new JLabel(jEdit.getProperty("menu-editor.help")), + BorderLayout.NORTH); + JPanel center = new JPanel(); + contentPanel.add(center, BorderLayout.CENTER); + model = new DefaultListModel(); + String [] menuBarItems = getMenus(); + for (String menu: menuBarItems) + model.addElement(new MenuElement(menu)); + menus = new JList(model); + JPanel menuPanel = new JPanel(new BorderLayout()); + menuPanel.add(new JLabel(getProp("menu-editor.bar")), + BorderLayout.NORTH); + menuPanel.add(new JScrollPane(menus), BorderLayout.CENTER); + center.add(menuPanel); + JPanel buttonPanel = new JPanel(new GridLayout(0, 1)); + menuPanel.add(buttonPanel, BorderLayout.EAST); + add = new RolloverButton(GUIUtilities.loadIcon("Plus.png")); + remove = new RolloverButton(GUIUtilities.loadIcon("Minus.png")); + up = new RolloverButton(GUIUtilities.loadIcon("ArrowU.png")); + down = new RolloverButton(GUIUtilities.loadIcon("ArrowD.png")); + buttonPanel.add(add); + buttonPanel.add(remove); + buttonPanel.add(up); + buttonPanel.add(down); + JPanel bottom = new JPanel(); + ok = new JButton(getProp("menu-editor.ok")); + ok.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + ok(); + } + }); + cancel = new JButton(getProp("menu-editor.cancel")); + cancel.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + cancel(); + } + }); + restoreDefault = new JButton(getProp("menu-editor.restoreDefaults")); + restoreDefault.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) + { + restoreDefault(); + } + }); + bottom.add(ok); + bottom.add(cancel); + bottom.add(restoreDefault); + contentPanel.add(bottom, BorderLayout.SOUTH); + setContentPane(contentPanel); + pack(); + setLocationRelativeTo(parent); + setVisible(true); + } + private void ok() + { + String diffPath = home.getAbsolutePath() + File.separator; + String diffFile = diffPath + menu + ".diff"; + String [] modified = new String [model.getSize()]; + for (int i = 0; i < model.getSize(); i++) + modified[i] = (String) model.get(i); + createPropertyDiff(diffFile, unchangedMenus, modified, viewMenuBar); + dispose(); + } + private void cancel() + { + dispose(); + } + private void restoreDefault() + { + + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |