From: <kp...@us...> - 2012-01-30 19:56:34
|
Revision: 21024 http://jedit.svn.sourceforge.net/jedit/?rev=21024&view=rev Author: kpouer Date: 2012-01-30 19:56:27 +0000 (Mon, 30 Jan 2012) Log Message: ----------- Fixed status bar widget editing (#3414671) Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2012-01-30 18:52:26 UTC (rev 21023) +++ jEdit/trunk/doc/CHANGES.txt 2012-01-30 19:56:27 UTC (rev 21024) @@ -11,6 +11,8 @@ {{{ Bug fixes +- Fixed status bar widget editing (#3414671) (Matthieu Casanova) + - Wrong chars in auxiliary fonts (Max Funk - #3474765, 3474534, 3480246) - Fixed rectangular selection constructor (patch #3440310) (peibl) Modified: jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2012-01-30 18:52:26 UTC (rev 21023) +++ jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2012-01-30 19:56:27 UTC (rev 21024) @@ -3,7 +3,7 @@ * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * - * Copyright (C) 2008-2011 Matthieu Casanova + * Copyright (C) 2008-2012 Matthieu Casanova * Portions Copyright (C) 2000-2002 Slava Pestov * * This program is free software; you can redistribute it and/or @@ -356,13 +356,17 @@ } else if(source == edit) { - String value = selectWidget(); - if (value == null) + Object selectedValue = list.getSelectedValue(); + if (selectedValue == null) return; - + WidgetSelectionDialog dialog = new WidgetSelectionDialog(StatusBarOptionPane.this, + String.valueOf(selectedValue)); + String value = dialog.getValue(); + if (value == null || value.isEmpty()) + return; int index = list.getSelectedIndex(); - - listModel.insertElementAt(value,index); + listModel.remove(index); + listModel.insertElementAt(value, index); list.setSelectedIndex(index); list.ensureIndexIsVisible(index); updatePreview(); @@ -419,12 +423,10 @@ private JRadioButton widgetRadio; private String value; - //{{{ WidgetSelectionDialog constructor - WidgetSelectionDialog(Component comp) + //{{{ WidgetSelectionDialog constructors + WidgetSelectionDialog(Component comp, String value) { - super(GUIUtilities.getParentDialog(comp), - jEdit.getProperty("options.status.edit.title"), - true); + super(GUIUtilities.getParentDialog(comp), jEdit.getProperty("options.status.edit.title"), true); ButtonGroup buttonGroup = new ButtonGroup(); labelRadio = new JRadioButton(jEdit.getProperty("options.status.edit.labelRadioButton")); widgetRadio = new JRadioButton(jEdit.getProperty("options.status.edit.widgetRadioButton")); @@ -437,6 +439,10 @@ widgetLabel = new JLabel(jEdit.getProperty("options.status.edit.widgetLabel")); String[] allWidgets = ServiceManager.getServiceNames("org.gjt.sp.jedit.gui.statusbar.StatusWidget"); + Arrays.sort(allWidgets); + + boolean valueIsWidget = Arrays.binarySearch(allWidgets, value) >= 0; + Vector<String> widgets = new Vector<String>(allWidgets.length); Set<String> usedWidget = new HashSet<String>(listModel.getSize()); for (int i = 0; i < listModel.getSize(); i++) @@ -445,7 +451,7 @@ } for (String widget : allWidgets) { - if (!usedWidget.contains(widget)) + if (!usedWidget.contains(widget) || (valueIsWidget && widget.equals(value))) widgets.add(widget); } widgetCombo = new JComboBox(widgets); @@ -497,13 +503,28 @@ } center.add(p); + if (valueIsWidget) + { + widgetRadio.setSelected(true); + widgetCombo.setSelectedItem(value); + } + else + { + labelRadio.setSelected(true); + labelField.setText(value); + labelField.setEnabled(true); + } - getContentPane().add(center, BorderLayout.CENTER); getContentPane().add(southPanel, BorderLayout.SOUTH); pack(); setLocationRelativeTo(GUIUtilities.getParentDialog(comp)); setVisible(true); + } + + WidgetSelectionDialog(Component comp) + { + this(comp, null); } //}}} //{{{ ok() method This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |