From: <sh...@us...> - 2008-10-28 21:58:36
|
Revision: 13958 http://jedit.svn.sourceforge.net/jedit/?rev=13958&view=rev Author: shlomy Date: 2008-10-28 21:58:30 +0000 (Tue, 28 Oct 2008) Log Message: ----------- Implemented feature request #2199003: Docking option pane: Configure dockables by plugin. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowFactory.java jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/options/DockingOptionPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowFactory.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowFactory.java 2008-10-28 18:54:50 UTC (rev 13957) +++ jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowFactory.java 2008-10-28 21:58:30 UTC (rev 13958) @@ -171,6 +171,14 @@ return dockableWindowFactories.get(name); } + public String getDockableWindowPluginClass(String name) + { + Window w = getDockableWindowFactory(name); + if (w == null || w.plugin == null || w.plugin.getPlugin() == null) + return null; + return w.plugin.getPlugin().getClassName(); + } + //{{{ getDockableWindowIterator() method Iterator<Window> getDockableWindowIterator() { Modified: jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java 2008-10-28 18:54:50 UTC (rev 13957) +++ jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java 2008-10-28 21:58:30 UTC (rev 13958) @@ -390,13 +390,23 @@ } // }}} - //{{{ getDockableTitle() method + //{{{ getRegisteredDockableWindows() method public static String[] getRegisteredDockableWindows() { return DockableWindowFactory.getInstance() .getRegisteredDockableWindows(); } //}}} + //{{{ getDockableWindowPluginClassName() method + public static String getDockableWindowPluginName(String name) + { + String pluginClass = + DockableWindowFactory.getInstance().getDockableWindowPluginClass(name); + if (pluginClass == null) + return null; + return jEdit.getProperty("plugin." + pluginClass + ".name"); + } //}}} + // {{{ setDockingLayout method public void setDockingLayout(DockingLayout docking) { Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-10-28 18:54:50 UTC (rev 13957) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-10-28 21:58:30 UTC (rev 13958) @@ -1810,6 +1810,7 @@ options.appearance.selectFramework.label=Docking framework: options.docking.autoSaveModeLayout.label=Automatically save mode-specific docking layout options.docking.autoLoadModeLayout.label=Automatically load mode-specific docking layout +options.docking.selectSet.label=Dockable set: #}}} #{{{ Editing pane Modified: jEdit/trunk/org/gjt/sp/jedit/options/DockingOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/DockingOptionPane.java 2008-10-28 18:54:50 UTC (rev 13957) +++ jEdit/trunk/org/gjt/sp/jedit/options/DockingOptionPane.java 2008-10-28 21:58:30 UTC (rev 13958) @@ -22,21 +22,40 @@ package org.gjt.sp.jedit.options; -import javax.swing.table.*; -import javax.swing.*; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.Vector; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; +import java.util.Vector; -import org.gjt.sp.jedit.gui.*; -import org.gjt.sp.jedit.*; +import javax.swing.Box; +import javax.swing.DefaultCellEditor; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.gjt.sp.jedit.AbstractOptionPane; +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.gui.DockableWindowManager; import org.gjt.sp.util.StandardUtilities; //}}} //{{{ DockingOptionPane class +@SuppressWarnings("serial") public class DockingOptionPane extends AbstractOptionPane { //{{{ DockingOptionPane constructor @@ -51,7 +70,8 @@ setLayout(new BorderLayout()); add(BorderLayout.NORTH,createDockingOptionsPanel()); add(BorderLayout.CENTER,createWindowTableScroller()); - // add(BorderLayout.SOUTH, new ) + dockableSetSelection.setModel( + new DefaultComboBoxModel(windowModel.getDockableSets())); } //}}} //{{{ _save() method @@ -69,6 +89,7 @@ private WindowTableModel windowModel; private JCheckBox autoLoadModeLayout; private JCheckBox autoSaveModeLayout; + private JComboBox dockableSetSelection; //}}} private static final String DOCKING_OPTIONS_PREFIX = "options.docking."; @@ -97,6 +118,23 @@ autoSaveModeLayout.setEnabled(autoLoadModeLayout.isSelected()); } }); + Box vSetSelection = Box.createVerticalBox(); + p.add(vSetSelection); + Box setSelection = Box.createHorizontalBox(); + vSetSelection.add(setSelection); + setSelection.add(Box.createHorizontalStrut(6)); + setSelection.add(new JLabel(jEdit.getProperty( + "options.docking.selectSet.label"))); + setSelection.add(Box.createHorizontalStrut(6)); + dockableSetSelection = new JComboBox(); + setSelection.add(dockableSetSelection); + dockableSetSelection.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + windowModel.showSet((String) dockableSetSelection.getSelectedItem()); + } + }); + setSelection.add(Box.createHorizontalStrut(6)); + vSetSelection.add(Box.createVerticalStrut(6)); return p; } //{{{ createWindowTableScroller() method @@ -157,27 +195,61 @@ } //}}} //{{{ WindowTableModel class +@SuppressWarnings("serial") class WindowTableModel extends AbstractTableModel { - private Vector windows; + private static final String PLUGIN_SET_PREFIX = "Plugin: "; + private static final String CORE_DOCKABLE_SET = "Core"; + private static final String ALL_DOCKABLE_SET = "All"; + private HashMap<String, Vector<Entry>> dockableSets; + private Vector<Entry> windows; //{{{ WindowTableModel constructor WindowTableModel() { - windows = new Vector(); - + dockableSets = new HashMap<String, Vector<Entry>>(); + Vector<Entry> all = new Vector<Entry>(); + dockableSets.put(ALL_DOCKABLE_SET, all); + windows = new Vector<Entry>(); String[] dockables = DockableWindowManager.getRegisteredDockableWindows(); - for(int i = 0; i < dockables.length; i++) + for (String dockable: dockables) { - windows.addElement(new Entry(dockables[i])); + String plugin = DockableWindowManager. + getDockableWindowPluginName(dockable); + String set; + if (plugin != null) + set = PLUGIN_SET_PREFIX + plugin; + else + set = CORE_DOCKABLE_SET; + Vector<Entry> currentSetDockables = dockableSets.get(set); + if (currentSetDockables == null) + { + currentSetDockables = new Vector<Entry>(); + dockableSets.put(set, currentSetDockables); + } + Entry entry = new Entry(dockable); + currentSetDockables.add(entry); + all.add(entry); } - - sort(); + showSet(ALL_DOCKABLE_SET); } //}}} - //{{{ sort() method - public void sort() + public Vector<String> getDockableSets() { + Vector<String> sets = new Vector<String>(); + for (String set: dockableSets.keySet()) + sets.add(set); + sets.remove(ALL_DOCKABLE_SET); + sets.remove(CORE_DOCKABLE_SET); + Collections.sort(sets); + sets.insertElementAt(CORE_DOCKABLE_SET, 0); + sets.insertElementAt(ALL_DOCKABLE_SET, 0); + return sets; + } + + //{{{ showSet() method + public void showSet(String set) { + windows = dockableSets.get(set); Collections.sort(windows,new WindowCompare()); fireTableDataChanged(); } //}}} @@ -296,7 +368,7 @@ } //}}} //{{{ WindowCompare class - static class WindowCompare implements Comparator + static class WindowCompare implements Comparator<Object> { public int compare(Object obj1, Object obj2) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2008-11-15 17:34:14
|
Revision: 14041 http://jedit.svn.sourceforge.net/jedit/?rev=14041&view=rev Author: daleanson Date: 2008-11-15 17:34:12 +0000 (Sat, 15 Nov 2008) Log Message: ----------- fix for 2220025, added gui configuration for caret status display. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/gui/StatusBar.java jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/gui/StatusBar.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/StatusBar.java 2008-11-15 16:28:19 UTC (rev 14040) +++ jEdit/trunk/org/gjt/sp/jedit/gui/StatusBar.java 2008-11-15 17:34:12 UTC (rev 14041) @@ -325,25 +325,43 @@ int virtualPosition = StandardUtilities.getVirtualWidth(seg, buffer.getTabSize()); - if (jEdit.getBooleanProperty("view.status.show-caret-offset", true)) { - buf.append(caretPosition).append(','); + if (jEdit.getBooleanProperty("view.status.show-caret-offset", true)) + { + buf.append(caretPosition); } - if (jEdit.getBooleanProperty("view.status.show-caret-linenumber", true)) { + if (jEdit.getBooleanProperty("view.status.show-caret-linenumber", true)) + { + if (buf.length() > 0) + { + buf.append(','); + } buf.append(Integer.toString(currLine + 1)); - buf.append(','); } - if (jEdit.getBooleanProperty("view.status.show-caret-dot", true)) { + if (jEdit.getBooleanProperty("view.status.show-caret-dot", true)) + { + if (buf.length() > 0) + { + buf.append(','); + } buf.append(Integer.toString(dot + 1)); } - if (jEdit.getBooleanProperty("view.status.show-caret-virtual", true) && virtualPosition != dot) + if (jEdit.getBooleanProperty("view.status.show-caret-virtual", true)) { - buf.append('-'); + if (buf.length() > 0 && jEdit.getBooleanProperty("view.status.show-caret-dot", true)) + { + buf.append('-'); + } + else if (buf.length() > 0) { + buf.append(','); + } buf.append(Integer.toString(virtualPosition + 1)); } - buf.append(' '); - if (jEdit.getBooleanProperty("view.status.show-caret-percent", true)) { + if (buf.length() > 0) + { + buf.append(' '); + } int firstLine = textArea.getFirstLine(); int visible = textArea.getVisibleLines(); int lineCount = textArea.getLineCount(); Modified: jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2008-11-15 16:28:19 UTC (rev 14040) +++ jEdit/trunk/org/gjt/sp/jedit/options/StatusBarOptionPane.java 2008-11-15 17:34:12 UTC (rev 14041) @@ -52,8 +52,8 @@ protected void _init() { setLayout(new BorderLayout()); - - //{{{ North + + //{{{ North JPanel panel = new JPanel(new GridLayout(2,1)); showStatusbar = new JCheckBox(jEdit.getProperty( "options.status.visible")); @@ -67,7 +67,7 @@ "options.status.caption"))); add(panel, BorderLayout.NORTH); //}}} - + //{{{ Options panel AbstractOptionPane optionsPanel = new AbstractOptionPane("Status Options"); /* Foreground color */ @@ -81,7 +81,7 @@ backgroundColor = new ColorWellButton( jEdit.getColorProperty("view.status.background")), GridBagConstraints.VERTICAL); - + /* Memory foreground color */ optionsPanel.addComponent(jEdit.getProperty("options.status.memory.foreground"), memForegroundColor = new ColorWellButton( @@ -93,9 +93,32 @@ memBackgroundColor = new ColorWellButton( jEdit.getColorProperty("view.status.memory.background")), GridBagConstraints.VERTICAL); + + optionsPanel.addSeparator(); + optionsPanel.addSeparator("Caret position display options:"); + + /* + view.status.show-caret-offset -- true shows caret offset from start of buffer + view.status.show-caret-linenumber -- true shows line number for caret + view.status.show-caret-dot -- true shows offset in line for caret + view.status.show-caret-virtual -- true shows virtual offset in line for caret + view.status.show-caret-percent -- true shows relative position of the caret within the buffer + */ + show_caret_offset = new JCheckBox("Show caret offset", jEdit.getBooleanProperty("view.status.show-caret-offset", true)); + show_caret_linenumber = new JCheckBox("Show caret line number", jEdit.getBooleanProperty("view.status.show-caret-linenumber", true)); + show_caret_dot = new JCheckBox("Show caret offset in line", jEdit.getBooleanProperty("view.status.show-caret-dot", true)); + show_caret_virtual = new JCheckBox("Show caret virtual offset in line", jEdit.getBooleanProperty("view.status.show-caret-virtual", true)); + show_caret_percent = new JCheckBox("Show relative position (%) of caret within buffer", jEdit.getBooleanProperty("view.status.show-caret-percent", true)); + optionsPanel.addComponent(show_caret_offset); + optionsPanel.addComponent(show_caret_linenumber); + optionsPanel.addComponent(show_caret_dot); + optionsPanel.addComponent(show_caret_virtual); + optionsPanel.addComponent(show_caret_percent); + + //}}} - + //{{{ widgets panel String statusbar = jEdit.getProperty("view.status"); StringTokenizer st = new StringTokenizer(statusbar); @@ -105,8 +128,8 @@ String token = st.nextToken(); listModel.addElement(token); } - + list = new JList(listModel); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.addListSelectionListener(new ListHandler()); @@ -149,8 +172,8 @@ updateButtons(); widgetsPanel.add(buttons, BorderLayout.SOUTH); - - + + JTabbedPane tabs = new JTabbedPane(); tabs.addTab("Options",optionsPanel); tabs.add("Widgets", widgetsPanel); @@ -182,11 +205,18 @@ { if(i != 0) buf.append(' '); - + String widgetName = (String) listModel.elementAt(i); buf.append(widgetName); } jEdit.setProperty("view.status",buf.toString()); + + jEdit.setBooleanProperty("view.status.show-caret-offset", show_caret_offset.isSelected()); + jEdit.setBooleanProperty("view.status.show-caret-linenumber", show_caret_linenumber.isSelected()); + jEdit.setBooleanProperty("view.status.show-caret-dot", show_caret_dot.isSelected()); + jEdit.setBooleanProperty("view.status.show-caret-virtual", show_caret_virtual.isSelected()); + jEdit.setBooleanProperty("view.status.show-caret-percent", show_caret_percent.isSelected()); + } //}}} //{{{ Private members @@ -204,6 +234,12 @@ private RolloverButton remove; private RolloverButton moveUp, moveDown; private RolloverButton edit; + + private JCheckBox show_caret_offset; + private JCheckBox show_caret_linenumber; + private JCheckBox show_caret_dot; + private JCheckBox show_caret_virtual; + private JCheckBox show_caret_percent; //}}} //{{{ updateButtons() method @@ -232,8 +268,8 @@ String value = selectWidget(); if (value == null) return; - - + + int index = list.getSelectedIndex(); if(index == -1) index = listModel.getSize(); @@ -288,7 +324,7 @@ list.ensureIndexIsVisible(index); } } - + private String selectWidget() { WidgetSelectionDialog dialog = new WidgetSelectionDialog(StatusBarOptionPane.this); @@ -309,7 +345,7 @@ } //}}} //}}} - + //{{{ WidgetSelectionDialog class private class WidgetSelectionDialog extends EnhancedDialog { @@ -322,7 +358,7 @@ private JLabel widgetLabel; private JRadioButton widgetRadio; private String value; - + //{{{ WidgetSelectionDialog constructor WidgetSelectionDialog(Component comp) { @@ -337,10 +373,10 @@ labelLabel = new JLabel(jEdit.getProperty("options.status.edit.labelLabel")); labelField = new JTextField(); - + widgetLabel = new JLabel(jEdit.getProperty("options.status.edit.widgetLabel")); widgetCombo = new JComboBox(ServiceManager.getServiceNames("org.gjt.sp.jedit.gui.statusbar.StatusWidget")); - + ActionHandler actionHandler = new ActionHandler(); labelRadio.addActionListener(actionHandler); widgetRadio.addActionListener(actionHandler); @@ -363,7 +399,7 @@ labelField.setEnabled(false); widgetRadio.setSelected(true); - + JPanel content = new JPanel(new BorderLayout()); content.setBorder(new EmptyBorder(12,12,12,12)); setContentPane(content); @@ -392,7 +428,7 @@ //{{{ ok() method @Override - public void ok() + public void ok() { if (widgetRadio.isSelected()) { @@ -404,21 +440,21 @@ } dispose(); } //}}} - + //{{{ cancel() method @Override - public void cancel() + public void cancel() { value = null; dispose(); } //}}} - + //{{{ getValue() method public String getValue() { return value; } //}}} - + //{{{ ActionHandler class private class ActionHandler implements ActionListener { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2008-11-15 19:07:46
|
Revision: 14043 http://jedit.svn.sourceforge.net/jedit/?rev=14043&view=rev Author: daleanson Date: 2008-11-15 19:07:44 +0000 (Sat, 15 Nov 2008) Log Message: ----------- fix for 2183929, buffer sets not sorting. Also fixed it so that changing the sorting option works immediately rather than requiring a restart. May also have fixed the issue where duplicate entries could end up in the buffer set. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-15 17:38:43 UTC (rev 14042) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-15 19:07:44 UTC (rev 14043) @@ -767,6 +767,8 @@ { if (bufferSwitcher != null) bufferSwitcher.updateBufferList(); + if (buffer == null) + return; if (bufferSet.indexOf(this.buffer) == -1) { // it happens when having 1 untitled buffer if I open a file. The untitled buffer @@ -994,7 +996,7 @@ jEdit.getColorProperty("view.gutter.noFocusBorderColor"), textArea.getPainter().getBackground()); gutter.setFoldPainter(textArea.getFoldPainter()); - + textArea.setCaretBlinkEnabled(jEdit.getBooleanProperty( "view.caretBlink")); Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java 2008-11-15 17:38:43 UTC (rev 14042) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java 2008-11-15 19:07:44 UTC (rev 14043) @@ -23,7 +23,11 @@ //{{{ Imports import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.EBComponent; +import org.gjt.sp.jedit.EditBus; +import org.gjt.sp.jedit.EBMessage; import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.util.Log; import org.gjt.sp.util.StandardUtilities; @@ -40,7 +44,7 @@ * @author Matthieu Casanova * @since jEdit 4.3pre15 */ -public class BufferSet +public class BufferSet implements EBComponent { //{{{ Scope enum public enum Scope @@ -71,6 +75,7 @@ buffers = Collections.synchronizedList(new ArrayList<Buffer>()); listeners = new EventListenerList(); this.scope = scope; + EditBus.addToBus(this); if (jEdit.getBooleanProperty("sortBuffers")) { @@ -81,10 +86,43 @@ } } //}}} + //{{{ finalize + protected void finalize() + { + EditBus.removeFromBus(this); + } //}}} + + //{{{ handleMessage + public void handleMessage(EBMessage msg) { + if (msg != null && msg instanceof PropertiesChanged) { + if (jEdit.getBooleanProperty("sortBuffers")) + { + if (jEdit.getBooleanProperty("sortByName")) + sorter = nameSorter; + else + sorter = pathSorter; + Collections.sort(buffers, sorter); + BufferSetListener[] listeners = this.listeners.getListeners(BufferSetListener.class); + for (BufferSetListener listener : listeners) + { + listener.bufferAdded(null, -1); + } + } + else + { + sorter = null; + } + } + } //}}} + //{{{ addBufferAt() method public void addBufferAt(Buffer buffer, int position) { Log.log(Log.DEBUG, this, hashCode() + " addBufferAt("+buffer+','+position+')'); + + if (buffers.contains(buffer)) + return; + Buffer untitledBuffer = null; synchronized (buffers) { @@ -97,12 +135,8 @@ } } - if (sorter != null && buffers.contains(buffer)) - sorter = null; if (sorter != null) { - if (buffers.contains(buffer)) - return; buffers.add(buffer); Collections.sort(buffers, sorter); position = buffers.indexOf(buffer); Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-11-15 17:38:43 UTC (rev 14042) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-11-15 19:07:44 UTC (rev 14043) @@ -2091,7 +2091,7 @@ options.view.beepOnSearchAutoWrap=Beep when searching automatically wraps options.view.showBufferSwitcher=Show buffer switcher options.view.bufferSwitcherMaxRowsCount=Visible rows in buffer switcher: -options.view.sortBuffers=Sort buffer sets (takes effect after restart) +options.view.sortBuffers=Sort buffer sets options.view.sortByName=Sort buffer sets by file name, instead of path name options.editpane.bufferset.default=BufferSet scope for new EditPanes: options.editpane.bufferset.contain=New BufferSets contain: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dal...@us...> - 2008-11-16 23:07:59
|
Revision: 14071 http://jedit.svn.sourceforge.net/jedit/?rev=14071&view=rev Author: daleanson Date: 2008-11-16 23:07:55 +0000 (Sun, 16 Nov 2008) Log Message: ----------- changed the code a little for bug 2183929. Added "bufferSetSorted" method to BufferSetAdapter, BufferSetListener, and EditPane. This method is now called by a BufferSet when it sorts and signals the BufferSetListeners that they should update their display. Moved message handling from BufferSet to BufferSetManager, which reduces the number of objects on the Editbus and removes the need for BufferSet to extend EBComponent. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetAdapter.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetListener.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-16 19:15:20 UTC (rev 14070) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-16 23:07:55 UTC (rev 14071) @@ -765,10 +765,10 @@ */ public void bufferAdded(Buffer buffer, int index) { + if (buffer == null) + return; if (bufferSwitcher != null) bufferSwitcher.updateBufferList(); - if (buffer == null) - return; if (bufferSet.indexOf(this.buffer) == -1) { // it happens when having 1 untitled buffer if I open a file. The untitled buffer @@ -848,6 +848,17 @@ // bufferSwitcher.updateBufferList(); } //}}} + //{{{ bufferSetSorted() method + /** + * The bufferSet was sorted + * @since jEdit 4.3pre16 + */ + public void bufferSetSorted() + { + if (bufferSwitcher != null) + bufferSwitcher.updateBufferList(); + } //}}} + //{{{ toString() method @Override public String toString() @@ -878,7 +889,6 @@ markerHighlight = new MarkerHighlight(); textArea.getGutter().addExtension(markerHighlight); textArea.addStatusListener(new StatusHandler()); - add(BorderLayout.CENTER,textArea); propertiesChanged(); Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java 2008-11-16 19:15:20 UTC (rev 14070) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSet.java 2008-11-16 23:07:55 UTC (rev 14071) @@ -23,9 +23,6 @@ //{{{ Imports import org.gjt.sp.jedit.Buffer; -import org.gjt.sp.jedit.EBComponent; -import org.gjt.sp.jedit.EditBus; -import org.gjt.sp.jedit.EBMessage; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.util.Log; @@ -44,7 +41,7 @@ * @author Matthieu Casanova * @since jEdit 4.3pre15 */ -public class BufferSet implements EBComponent +public class BufferSet { //{{{ Scope enum public enum Scope @@ -75,7 +72,6 @@ buffers = Collections.synchronizedList(new ArrayList<Buffer>()); listeners = new EventListenerList(); this.scope = scope; - EditBus.addToBus(this); if (jEdit.getBooleanProperty("sortBuffers")) { @@ -86,33 +82,35 @@ } } //}}} - //{{{ finalize - protected void finalize() - { - EditBus.removeFromBus(this); - } //}}} - //{{{ handleMessage - public void handleMessage(EBMessage msg) { - if (msg != null && msg instanceof PropertiesChanged) { - if (jEdit.getBooleanProperty("sortBuffers")) - { - if (jEdit.getBooleanProperty("sortByName")) - sorter = nameSorter; - else - sorter = pathSorter; - Collections.sort(buffers, sorter); - BufferSetListener[] listeners = this.listeners.getListeners(BufferSetListener.class); - for (BufferSetListener listener : listeners) - { - listener.bufferAdded(null, -1); - } - } + /** + * This method is called by BufferSetManager to signal that this + * BufferSet needs to react to a change in the sorting properties. + */ + protected void handleMessage(PropertiesChanged msg) { + if (jEdit.getBooleanProperty("sortBuffers")) + { + // set the appropriate sorter + if (jEdit.getBooleanProperty("sortByName")) + sorter = nameSorter; else + sorter = pathSorter; + + // do the sort + Collections.sort(buffers, sorter); + + // notify the listeners so they can repaint themselves + BufferSetListener[] listeners = this.listeners.getListeners(BufferSetListener.class); + for (BufferSetListener listener : listeners) { - sorter = null; + listener.bufferSetSorted(); } } + else + { + // user has elected not to sort BufferSets + sorter = null; + } } //}}} //{{{ addBufferAt() method Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetAdapter.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetAdapter.java 2008-11-16 19:15:20 UTC (rev 14070) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetAdapter.java 2008-11-16 23:07:55 UTC (rev 14071) @@ -23,8 +23,6 @@ import org.gjt.sp.jedit.Buffer; -import java.util.EventListener; - /** * @author Matthieu Casanova * @since jEdit 4.3pre15 @@ -46,4 +44,9 @@ public void bufferCleared() { } + + public void bufferSetSorted() + { + } + } Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetListener.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetListener.java 2008-11-16 19:15:20 UTC (rev 14070) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetListener.java 2008-11-16 23:07:55 UTC (rev 14071) @@ -62,4 +62,10 @@ * The bufferSet was cleared, it is now empty. */ void bufferCleared(); + + /** + * The bufferSet was sorted. + */ + void bufferSetSorted(); + } Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2008-11-16 19:15:20 UTC (rev 14070) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2008-11-16 23:07:55 UTC (rev 14071) @@ -25,6 +25,7 @@ import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.jedit.msg.EditPaneUpdate; +import org.gjt.sp.jedit.msg.PropertiesChanged; import org.gjt.sp.util.Log; import java.util.*; @@ -108,6 +109,19 @@ } } } + else if (message instanceof PropertiesChanged) { + // pass on PropertiesChanged message to BufferSets so + // they can resort themselves as needed. + for (BufferSet bufferSet : editPaneBufferSetMap.values()) + { + bufferSet.handleMessage((PropertiesChanged)message); + } + for (BufferSet bufferSet : viewBufferSetMap.values()) + { + bufferSet.handleMessage((PropertiesChanged)message); + } + } + } //}}} //{{{ getGlobalBufferSet() method This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2008-11-22 20:40:17
|
Revision: 14093 http://jedit.svn.sourceforge.net/jedit/?rev=14093&view=rev Author: kpouer Date: 2008-11-22 20:40:15 +0000 (Sat, 22 Nov 2008) Log Message: ----------- fixed some coding styles Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-22 20:31:39 UTC (rev 14092) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-11-22 20:40:15 UTC (rev 14093) @@ -380,8 +380,9 @@ // set any selections Selection[] selection = caretInfo.selection; - if ( selection == null ) { - selection = (Selection[])buffer.getProperty(Buffer.SELECTION); + if ( selection == null ) + { + selection = (Selection[]) buffer.getProperty(Buffer.SELECTION); } if(selection != null) { @@ -1031,7 +1032,8 @@ textArea.propertiesChanged(); - if (bufferSwitcher != null) { + if (bufferSwitcher != null) + { bufferSwitcher.setMaximumRowCount(jEdit.getIntegerProperty( "bufferSwitcher.maxRowCount",10)); } Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java 2008-11-22 20:31:39 UTC (rev 14092) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java 2008-11-22 20:40:15 UTC (rev 14093) @@ -66,7 +66,8 @@ //{{{ getFoldPainter() method @Override - public FoldPainter getFoldPainter() { + public FoldPainter getFoldPainter() + { FoldPainter foldPainter = (FoldPainter) ServiceManager.getService( FOLD_PAINTER_SERVICE, getFoldPainterName()); if (foldPainter == null) @@ -492,6 +493,7 @@ * plugin uses this API. * @since jEdit 4.2pre13 */ + @Override public void handlePopupTrigger(MouseEvent evt) { @@ -520,6 +522,7 @@ * Creates the popup menu. * @since 4.3pre15 */ + @Override public void createPopupMenu(MouseEvent evt) { popup = GUIUtilities.loadPopupMenu("view.context", this, evt); @@ -541,12 +544,14 @@ * Shows the popup menu below the current caret position. * @since 4.3pre10 */ + @Override public void showPopupMenu() { if (!popup.isVisible() && hasFocus()) { Point caretPos = offsetToXY(getCaretPosition()); - if (caretPos != null) { + if (caretPos != null) + { // Open the context menu below the caret int charHeight = getPainter().getFontMetrics().getHeight(); GUIUtilities.showPopupMenu(popup, Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2008-11-22 20:31:39 UTC (rev 14092) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2008-11-22 20:40:15 UTC (rev 14093) @@ -5746,7 +5746,8 @@ else start = "{{{ "; - if (startLineComment != null) { + if (startLineComment != null) + { // add a new line if there's text after the comment // we're inserting if (buffer.getLineLength(lineStart) != caretStart) @@ -5951,7 +5952,8 @@ if (!popup.isVisible() && hasFocus()) { Point caretPos = offsetToXY(getCaretPosition()); - if (caretPos != null) { + if (caretPos != null) + { // Open the context menu below the caret int charHeight = getPainter().getFontMetrics().getHeight(); showPopupMenu(popup, Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java 2008-11-22 20:31:39 UTC (rev 14092) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextAreaTransferHandler.java 2008-11-22 20:40:15 UTC (rev 14093) @@ -290,9 +290,8 @@ } - if (found) { + if (found) return true; - } } if(dragSource != null This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <k_s...@us...> - 2008-11-30 17:59:37
|
Revision: 14122 http://jedit.svn.sourceforge.net/jedit/?rev=14122&view=rev Author: k_satoda Date: 2008-11-30 17:59:34 +0000 (Sun, 30 Nov 2008) Log Message: ----------- Introduced some use of generics around the use of MenuItemTextComparator where unchecked warnings were issued. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java jEdit/trunk/org/gjt/sp/jedit/menu/MacrosProvider.java jEdit/trunk/org/gjt/sp/jedit/menu/PluginsProvider.java jEdit/trunk/org/gjt/sp/jedit/menu/RecentDirectoriesProvider.java Modified: jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-11-30 16:08:38 UTC (rev 14121) +++ jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-11-30 17:59:34 UTC (rev 14122) @@ -164,8 +164,8 @@ { if(encodingMenuItems != null) { - JRadioButtonMenuItem mi = (JRadioButtonMenuItem) - encodingMenuItems.get(browser.currentEncoding); + JRadioButtonMenuItem mi = encodingMenuItems.get( + browser.currentEncoding); if(mi != null) { mi.setSelected(true); @@ -184,7 +184,7 @@ //{{{ Private members private VFSBrowser browser; - private HashMap encodingMenuItems; + private HashMap<String, JRadioButtonMenuItem> encodingMenuItems; private JCheckBoxMenuItem autoDetect; private JRadioButtonMenuItem otherEncoding; @@ -200,7 +200,7 @@ { ActionHandler actionHandler = new ActionHandler(); - encodingMenuItems = new HashMap(); + encodingMenuItems = new HashMap<String, JRadioButtonMenuItem>(); JMenu encodingMenu = new JMenu(jEdit.getProperty( "vfs.browser.commands.encoding.label")); @@ -217,7 +217,7 @@ ButtonGroup grp = new ButtonGroup(); - List encodingMenuItemList = new ArrayList(); + List<JMenuItem> encodingMenuItemList = new ArrayList<JMenuItem>(); String[] encodings = MiscUtilities.getEncodings(true); for(int i = 0; i < encodings.length; i++) { Modified: jEdit/trunk/org/gjt/sp/jedit/menu/MacrosProvider.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/menu/MacrosProvider.java 2008-11-30 16:08:38 UTC (rev 14121) +++ jEdit/trunk/org/gjt/sp/jedit/menu/MacrosProvider.java 2008-11-30 17:59:34 UTC (rev 14122) @@ -58,7 +58,7 @@ //{{{ createMacrosMenu() method private void createMacrosMenu(JMenu menu, Vector vector, int start) { - Vector menuItems = new Vector(); + Vector<JMenuItem> menuItems = new Vector<JMenuItem>(); for(int i = start; i < vector.size(); i++) { @@ -83,7 +83,7 @@ Collections.sort(menuItems, new MenuItemTextComparator()); for(int i = 0; i < menuItems.size(); i++) { - menu.add((JMenuItem)menuItems.get(i)); + menu.add(menuItems.get(i)); } } //}}} } Modified: jEdit/trunk/org/gjt/sp/jedit/menu/PluginsProvider.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/menu/PluginsProvider.java 2008-11-30 16:08:38 UTC (rev 14121) +++ jEdit/trunk/org/gjt/sp/jedit/menu/PluginsProvider.java 2008-11-30 17:59:34 UTC (rev 14122) @@ -42,13 +42,13 @@ // items that begin with a given letter. int count = 0; - List[] letters = new List[26]; + List<JMenuItem>[] letters = (List<JMenuItem>[])new List[26]; for(int i = 0; i < letters.length; i++) { - letters[i] = new ArrayList(); + letters[i] = new ArrayList<JMenuItem>(); } - Vector pluginMenuItems = new Vector(); + Vector<JMenuItem> pluginMenuItems = new Vector<JMenuItem>(); PluginJAR[] pluginArray = jEdit.getPluginJARs(); for(int i = 0; i < pluginArray.length; i++) @@ -74,11 +74,12 @@ pluginMenuItems.clear(); plugin.createMenuItems(pluginMenuItems); - Iterator iter = pluginMenuItems.iterator(); + Iterator<JMenuItem> iter + = pluginMenuItems.iterator(); while(iter.hasNext()) { addToLetterMap(letters, - (JMenuItem)iter.next()); + iter.next()); count++; } } @@ -104,8 +105,7 @@ // Sort each letter for(int i = 0; i < letters.length; i++) { - List list = letters[i]; - Collections.sort(list,new MenuItemTextComparator()); + Collections.sort(letters[i],new MenuItemTextComparator()); } int maxItems = jEdit.getIntegerProperty("menu.spillover",20); @@ -115,10 +115,11 @@ { for(int i = 0; i < letters.length; i++) { - Iterator iter = letters[i].iterator(); + Iterator<JMenuItem> iter + = letters[i].iterator(); while(iter.hasNext()) { - menu.add((JMenuItem)iter.next()); + menu.add(iter.next()); } } @@ -133,7 +134,7 @@ for(int i = 0; i < letters.length; i++) { - List letter = letters[i]; + List<JMenuItem> letter = letters[i]; if(count + letter.size() > maxItems && count != 0) { @@ -147,7 +148,7 @@ submenu = null; } - Iterator iter = letter.iterator(); + Iterator<JMenuItem> iter = letter.iterator(); while(iter.hasNext()) { if(submenu == null) @@ -155,7 +156,7 @@ submenu = new JMenu(); menu.add(submenu); } - submenu.add((JMenuItem)iter.next()); + submenu.add(iter.next()); } count += letter.size(); @@ -172,7 +173,7 @@ } //}}} //{{{ addToLetterMap() method - private void addToLetterMap(List[] letters, JMenuItem item) + private void addToLetterMap(List<JMenuItem>[] letters, JMenuItem item) { char ch = item.getText().charAt(0); ch = Character.toUpperCase(ch); Modified: jEdit/trunk/org/gjt/sp/jedit/menu/RecentDirectoriesProvider.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/menu/RecentDirectoriesProvider.java 2008-11-30 16:08:38 UTC (rev 14121) +++ jEdit/trunk/org/gjt/sp/jedit/menu/RecentDirectoriesProvider.java 2008-11-30 17:59:34 UTC (rev 14122) @@ -87,7 +87,7 @@ int maxItems = jEdit.getIntegerProperty("menu.spillover",20); - Vector menuItems = new Vector(); + Vector<JMenuItem> menuItems = new Vector<JMenuItem>(); for(int i = 0; i < model.getSize(); i++) { @@ -130,7 +130,7 @@ menu = newMenu; } - menu.add((JMenuItem)menuItems.elementAt(i)); + menu.add(menuItems.elementAt(i)); } } } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2008-12-12 16:13:51
|
Revision: 14158 http://jedit.svn.sourceforge.net/jedit/?rev=14158&view=rev Author: shlomy Date: 2008-12-12 16:13:47 +0000 (Fri, 12 Dec 2008) Log Message: ----------- Avoid saving the perspective during jEdit startup. The "startupDone" mark was set at the end of finishStartup(), but this is not longer the end of startup due to dockable layout jobs postponed to the AWT thread. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/PerspectiveManager.java jEdit/trunk/org/gjt/sp/jedit/jEdit.java Modified: jEdit/trunk/org/gjt/sp/jedit/PerspectiveManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/PerspectiveManager.java 2008-12-12 15:20:18 UTC (rev 14157) +++ jEdit/trunk/org/gjt/sp/jedit/PerspectiveManager.java 2008-12-12 16:13:47 UTC (rev 14158) @@ -114,7 +114,7 @@ //{{{ savePerspective() method public static void savePerspective(boolean autosave) { - if(!isPerspectiveEnabled()) + if(!isPerspectiveEnabled() || !jEdit.isStartupDone()) return; if(perspectiveXML == null) Modified: jEdit/trunk/org/gjt/sp/jedit/jEdit.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2008-12-12 15:20:18 UTC (rev 14157) +++ jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2008-12-12 16:13:47 UTC (rev 14158) @@ -112,6 +112,8 @@ System.exit(1); } //}}} + startupDone.add(false); + // later on we need to know if certain code is called from // the main thread mainThread = Thread.currentThread(); @@ -2367,9 +2369,11 @@ newView.setVisible(true); - if(!config.plainView) - SwingUtilities.invokeLater(new DockingLayoutSetter(newView, config)); - + if(!config.plainView) { + startupDone.add(false); + SwingUtilities.invokeLater(new DockingLayoutSetter(newView, config, jEdit.getViewCount())); + } + // show tip of the day if(newView == viewsFirst) { @@ -2477,7 +2481,7 @@ */ public static boolean isStartupDone() { - return startupDone; + return (! startupDone.contains(false)); } //}}} //{{{ isMainThread() method @@ -2921,7 +2925,7 @@ } pluginErrors.addElement(newEntry); - if(startupDone) + if(isStartupDone()) { SwingUtilities.invokeLater(new Runnable() { @@ -2992,7 +2996,7 @@ private static View viewsLast; private static View activeView; - private static boolean startupDone; + private static Vector<Boolean> startupDone = new Vector<Boolean>(); private static Thread mainThread; //}}} @@ -3774,7 +3778,7 @@ showPluginErrorDialog(); } //}}} - startupDone = true; + startupDone.set(0, true); // in one case not a single AWT class will // have been touched (splash screen off + @@ -4236,17 +4240,20 @@ { private View view; private ViewConfig config; - - DockingLayoutSetter(View view, ViewConfig config) + private int startupDoneIndex; + + DockingLayoutSetter(View view, ViewConfig config, int startupDoneIndex) { this.view = view; this.config = config; + this.startupDoneIndex = startupDoneIndex; } public void run() { DockableWindowManager wm = view.getDockableWindowManager(); wm.setDockingLayout(config.docking); + startupDone.set(startupDoneIndex, true); } } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2008-12-16 09:23:41
|
Revision: 14180 http://jedit.svn.sourceforge.net/jedit/?rev=14180&view=rev Author: kpouer Date: 2008-12-16 09:23:37 +0000 (Tue, 16 Dec 2008) Log Message: ----------- removed a few warnings Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java Modified: jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2008-12-16 09:05:08 UTC (rev 14179) +++ jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2008-12-16 09:23:37 UTC (rev 14180) @@ -41,7 +41,7 @@ // {{{ data members protected final String name; protected final String label; - protected final Vector members; + protected final List<Object> members; private boolean sort; // }}} @@ -57,12 +57,15 @@ { this.name = name; label = jEdit.getProperty("options." + name + ".label"); - members = new Vector(); + members = new ArrayList<Object>(); } //}}} //{{{ OptionGroup constructor /** * Creates an option group. + * @param name The internal name of the option group, used to key a + * property <code>options.<i>name</i>.label</code> which is the + * label displayed in the options dialog. * @param label The label * @param options A whitespace-separated list of option pane names * @since jEdit 4.2pre2 @@ -71,7 +74,7 @@ { this.name = name; this.label = label; - members = new Vector(); + members = new ArrayList<Object>(); StringTokenizer st = new StringTokenizer(options); while(st.hasMoreTokens()) @@ -90,6 +93,7 @@ //{{{ getLabel() method /** * Returns the option group's human-readable label. + * @return the option group's human-readable label. * @since jEdit 4.2pre1 */ public String getLabel() @@ -124,16 +128,16 @@ } //}}} //{{{ getMembers() method - public Enumeration getMembers() + public Iterator<Object> getMembers() { - return members.elements(); + return members.iterator(); } //}}} //{{{ getMember() method public Object getMember(int index) { - return (index >= 0 && index < members.size()) - ? members.elementAt(index) : null; + return index >= 0 && index < members.size() + ? members.get(index) : null; } //}}} //{{{ getMemberIndex() method @@ -151,6 +155,7 @@ //{{{ setSort() method /** * Sets if the members of this group should be sorted. + * @param sort the new sort flag, true to sort the group false otherwise * @since jEdit 4.2pre3 */ public void setSort(boolean sort) @@ -168,7 +173,7 @@ { for(int i = 0; i < members.size(); i++) { - Object obj = members.elementAt(i); + Object obj = members.get(i); String label; if(obj instanceof OptionPane) { @@ -190,13 +195,13 @@ if(newLabel.compareToIgnoreCase(label) < 0) { - members.insertElementAt(newObj,i); + members.add(i, newObj); return; } } } - members.addElement(newObj); + members.add(newObj); } //}}} //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java 2008-12-16 09:05:08 UTC (rev 14179) +++ jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java 2008-12-16 09:23:37 UTC (rev 14180) @@ -386,10 +386,10 @@ { path.add(node); - Enumeration e = node.getMembers(); - while(e.hasMoreElements()) + Iterator<Object> iterator = node.getMembers(); + while (iterator.hasNext()) { - Object obj = e.nextElement(); + Object obj = iterator.next(); if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; @@ -447,10 +447,10 @@ if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; - Enumeration members = grp.getMembers(); - while(members.hasMoreElements()) + Iterator<Object> members = grp.getMembers(); + while (members.hasNext()) { - save(members.nextElement()); + save(members.next()); } } else if(obj instanceof OptionPane) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2008-12-18 20:41:48
|
Revision: 14186 http://jedit.svn.sourceforge.net/jedit/?rev=14186&view=rev Author: ezust Date: 2008-12-18 20:41:42 +0000 (Thu, 18 Dec 2008) Log Message: ----------- Ensure that readUnlock is called from calculateHash by placing into a finally{} block. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/Buffer.java jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java Modified: jEdit/trunk/org/gjt/sp/jedit/Buffer.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2008-12-18 16:59:41 UTC (rev 14185) +++ jEdit/trunk/org/gjt/sp/jedit/Buffer.java 2008-12-18 20:41:42 UTC (rev 14186) @@ -1899,15 +1899,14 @@ final byte[] dummy = new byte[1]; if (!jEdit.getBooleanProperty("useMD5forDirtyCalculation")) return dummy; + readLock(); try { - readLock(); - Log.log(Log.NOTICE, this, "calculateHash()"); + // Log.log(Log.NOTICE, this, "calculateHash()"); int length = getLength(); ByteBuffer bb = ByteBuffer.allocate(length * 2); // Chars are 2 bytes CharBuffer cb = bb.asCharBuffer(); cb.append( getSegment(0, length) ); - readUnlock(); MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); digest.update( bb ); return digest.digest(); @@ -1917,6 +1916,9 @@ Log.log(Log.ERROR, this, "Can't Calculate MD5 hash!", nsae); return dummy; } + finally { + readUnlock(); + } } /** Update the buffer's members with the current hash and length, @@ -1924,18 +1926,14 @@ */ private void updateHash() { - md5hash = calculateHash(); initialLength = getLength(); + md5hash = calculateHash(); } - //{{{ finishLoading() method private void finishLoading() { - updateHash(); - - parseBufferLocalProperties(); // AHA! @@ -1973,8 +1971,6 @@ boolean rename, boolean error) { - - //{{{ Set the buffer's path // Caveat: won't work if save() called with a relative path. // But I don't think anyone calls it like that anyway. Modified: jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java 2008-12-18 16:59:41 UTC (rev 14185) +++ jEdit/trunk/org/gjt/sp/jedit/gui/DockableWindowManager.java 2008-12-18 20:41:42 UTC (rev 14186) @@ -113,6 +113,7 @@ * * @author Slava Pestov * @author John Gellene (API documentation) + * @author Shlomy Reinstein (refactoring into a base and an impl) * @version $Id$ * @since jEdit 2.6pre3 * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2008-12-26 00:37:21
|
Revision: 14204 http://jedit.svn.sourceforge.net/jedit/?rev=14204&view=rev Author: ezust Date: 2008-12-26 00:37:18 +0000 (Fri, 26 Dec 2008) Log Message: ----------- Undoing the commit 14180. The svn command, with the CWD in trunk, is this: svn merge -c -14180 . Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java Modified: jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2008-12-26 00:14:51 UTC (rev 14203) +++ jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2008-12-26 00:37:18 UTC (rev 14204) @@ -41,7 +41,7 @@ // {{{ data members protected final String name; protected final String label; - protected final List<Object> members; + protected final Vector members; private boolean sort; // }}} @@ -57,15 +57,12 @@ { this.name = name; label = jEdit.getProperty("options." + name + ".label"); - members = new ArrayList<Object>(); + members = new Vector(); } //}}} //{{{ OptionGroup constructor /** * Creates an option group. - * @param name The internal name of the option group, used to key a - * property <code>options.<i>name</i>.label</code> which is the - * label displayed in the options dialog. * @param label The label * @param options A whitespace-separated list of option pane names * @since jEdit 4.2pre2 @@ -74,7 +71,7 @@ { this.name = name; this.label = label; - members = new ArrayList<Object>(); + members = new Vector(); StringTokenizer st = new StringTokenizer(options); while(st.hasMoreTokens()) @@ -93,7 +90,6 @@ //{{{ getLabel() method /** * Returns the option group's human-readable label. - * @return the option group's human-readable label. * @since jEdit 4.2pre1 */ public String getLabel() @@ -128,16 +124,16 @@ } //}}} //{{{ getMembers() method - public Iterator<Object> getMembers() + public Enumeration getMembers() { - return members.iterator(); + return members.elements(); } //}}} //{{{ getMember() method public Object getMember(int index) { - return index >= 0 && index < members.size() - ? members.get(index) : null; + return (index >= 0 && index < members.size()) + ? members.elementAt(index) : null; } //}}} //{{{ getMemberIndex() method @@ -155,7 +151,6 @@ //{{{ setSort() method /** * Sets if the members of this group should be sorted. - * @param sort the new sort flag, true to sort the group false otherwise * @since jEdit 4.2pre3 */ public void setSort(boolean sort) @@ -173,7 +168,7 @@ { for(int i = 0; i < members.size(); i++) { - Object obj = members.get(i); + Object obj = members.elementAt(i); String label; if(obj instanceof OptionPane) { @@ -195,13 +190,13 @@ if(newLabel.compareToIgnoreCase(label) < 0) { - members.add(i, newObj); + members.insertElementAt(newObj,i); return; } } } - members.add(newObj); + members.addElement(newObj); } //}}} //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java 2008-12-26 00:14:51 UTC (rev 14203) +++ jEdit/trunk/org/gjt/sp/jedit/gui/OptionsDialog.java 2008-12-26 00:37:18 UTC (rev 14204) @@ -386,10 +386,10 @@ { path.add(node); - Iterator<Object> iterator = node.getMembers(); - while (iterator.hasNext()) + Enumeration e = node.getMembers(); + while(e.hasMoreElements()) { - Object obj = iterator.next(); + Object obj = e.nextElement(); if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; @@ -447,10 +447,10 @@ if(obj instanceof OptionGroup) { OptionGroup grp = (OptionGroup)obj; - Iterator<Object> members = grp.getMembers(); - while (members.hasNext()) + Enumeration members = grp.getMembers(); + while(members.hasMoreElements()) { - save(members.next()); + save(members.nextElement()); } } else if(obj instanceof OptionPane) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2008-12-30 06:30:11
|
Revision: 14253 http://jedit.svn.sourceforge.net/jedit/?rev=14253&view=rev Author: shlomy Date: 2008-12-30 06:30:07 +0000 (Tue, 30 Dec 2008) Log Message: ----------- Applied patch #2296738, which implements feature request #1936518 - adding a 'properties' context menu to the VFS browser, showing the properties of the selected file(s). Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props Added Paths: ----------- jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java Modified: jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-12-30 04:30:55 UTC (rev 14252) +++ jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-12-30 06:30:07 UTC (rev 14253) @@ -121,6 +121,10 @@ add(createMenuItem("copy-path")); add(createMenuItem("paste")); + + if( browser.getSelectedFiles().length != 0) + add(createMenuItem("properties")); + addSeparator(); } Modified: jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2008-12-30 04:30:55 UTC (rev 14252) +++ jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2008-12-30 06:30:07 UTC (rev 14253) @@ -34,11 +34,13 @@ import java.util.List; import org.gjt.sp.jedit.io.*; +import org.gjt.sp.jedit.io.FileVFS.LocalFile; import org.gjt.sp.jedit.gui.*; import org.gjt.sp.jedit.msg.*; import org.gjt.sp.jedit.search.*; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.buffer.JEditBuffer; +import org.gjt.sp.util.IOUtilities; import org.gjt.sp.util.Log; import org.gjt.sp.jedit.menu.MenuItemTextComparator; //}}} @@ -750,6 +752,40 @@ }); } //}}} + //{{{ rename() method + public void rename(String from, String newname) + { + VFS vfs = VFSManager.getVFSForPath(from); + + String filename = vfs.getFileName(from); + String[] args = { filename }; + String to = newname; + + if(to == null || filename.equals(newname)) + return; + + to = MiscUtilities.constructPath(vfs.getParentOfPath(from),to); + + Object session = vfs.createVFSSession(from,this); + if(session == null) + return; + + if(!startRequest()) + return; + + VFSManager.runInWorkThread(new BrowserIORequest( + BrowserIORequest.RENAME,this, + session,vfs,from,to,null)); + + VFSManager.runInAWTThread(new Runnable() + { + public void run() + { + endRequest(); + } + }); + } //}}} + //{{{ mkdir() method public void mkdir() { @@ -820,6 +856,15 @@ jEdit.newFile(view,path); } //}}} + //{{{ fileProperties() method + /** + * Show selected file's properties. + */ + public void fileProperties() + { + new FilePropertiesDialog(view, this); + } //}}} + //{{{ searchInDirectory() method /** * Opens a directory search in the current directory. Modified: jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml 2008-12-30 04:30:55 UTC (rev 14252) +++ jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml 2008-12-30 06:30:07 UTC (rev 14253) @@ -139,6 +139,12 @@ </CODE> </ACTION> +<ACTION NAME="vfs.browser.properties"> + <CODE> + browser.fileProperties(); + </CODE> +</ACTION> + <ACTION NAME="vfs.browser.reload"> <CODE> browser.reloadDirectory(); Added: jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java (rev 0) +++ jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java 2008-12-30 06:30:07 UTC (rev 14253) @@ -0,0 +1,306 @@ + +package org.gjt.sp.jedit.gui; + +//{{{ Imports +import java.io.File; + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +import org.gjt.sp.jedit.GUIUtilities; +import org.gjt.sp.jedit.OperatingSystem; +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.View; +import org.gjt.sp.jedit.browser.VFSBrowser; +import org.gjt.sp.jedit.io.VFSFile; +import org.gjt.sp.jedit.io.FileVFS.LocalFile; +import org.gjt.sp.jedit.MiscUtilities; +import org.gjt.sp.util.IOUtilities; +//}}} + +/** + * File's Properties dialog. This class create and show a window from the selected file or files. + */ +public class FilePropertiesDialog extends EnhancedDialog +{ + private View view; + private VFSBrowser browser; + private VFSFile[] selectedFiles = null; + private LocalFile local; + + //{{{ FilePropertiesDialog(View view, VFSBrowser browser) constructor + /** + * The FilePropertiesDialog's constructor + * @param view The view + * @param browser The VFSBrowser + */ + public FilePropertiesDialog(View view, VFSBrowser browser) + { + super(view,jEdit.getProperty("vfs.browser.properties.title"),true); + GUIUtilities.loadGeometry(this,"propdialog"); + + this.browser = browser; + this.view = view; + + this.selectedFiles = browser.getSelectedFiles(); + this.local = (LocalFile)selectedFiles[0]; + createAndShowGUI(); + } //}}} + + //{{{ createAndShowGUI() method + private void createAndShowGUI() + { + addComponentsToPane(); + this.pack(); + + this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + this.setFocusable(true); + this.toFront(); + this.requestFocus(); + this.setResizable(false); + this.setVisible(true); + } //}}} + + private JButton okButton; + private JButton cancelButton; + private JTextField nameTextField; + private JLabel infoIcon; + private JCheckBox readable; + private JCheckBox write; + + //{{{ addComponentsToPane() method + public void addComponentsToPane() + { + JPanel content = new JPanel(new BorderLayout()); + content.setBorder(new EmptyBorder(12,5,0,5)); + setContentPane(content); + + if (selectedFiles.length == 1) + { + content.add(BorderLayout.NORTH, createNorthPanel()); + content.add(BorderLayout.CENTER, createCenterPanel()); + content.add(BorderLayout.SOUTH, createSouthPanel()); + } + else if(selectedFiles.length > 1) + { + content.add(BorderLayout.NORTH, createNorthPanelAll()); + content.add(BorderLayout.CENTER, createCenterPanelAll()); + content.add(BorderLayout.SOUTH, createSouthPanelAll()); + } + } //}}} + + + //{{{createNorthPanelAll() method + public JPanel createNorthPanelAll() + { + int filesCounter=0, directoriesCounter=0; + + JPanel northPanel = new JPanel(new BorderLayout()); + + infoIcon = new JLabel(); + infoIcon.setIcon(UIManager.getIcon("OptionPane.informationIcon")); + northPanel.add(BorderLayout.WEST, infoIcon); + + for(int i=0;i<selectedFiles.length;i++) + { + if(selectedFiles[i].getType() == VFSFile.DIRECTORY) + { + directoriesCounter++; + } + else if(selectedFiles[i].getType() == VFSFile.FILE) + { + filesCounter++; + } + } + JPanel nameField = new JPanel(); + nameField.add(new JLabel(jEdit.getProperty("fileprop.selectedFiles")+": "+filesCounter+", "+ + jEdit.getProperty("fileprop.selectedDirectories")+": "+directoriesCounter)); + + northPanel.add(BorderLayout.CENTER, nameField); + northPanel.add(BorderLayout.SOUTH, new JPanel()); + + return northPanel; + } //}}} + + + //{{{createCenterPanelAll() method + public JPanel createCenterPanelAll() + { + long filesSize=0; + File ioFile; + JPanel centerPanel = new JPanel(new BorderLayout()); + + for(int i=0;i<selectedFiles.length;i++){ + if(selectedFiles[i].getType() == VFSFile.DIRECTORY){ + ioFile = new File(selectedFiles[i].getPath()); + filesSize += IOUtilities.fileLength(ioFile); + } + else if(selectedFiles[i].getType() == VFSFile.FILE) + { + filesSize += selectedFiles[i].getLength(); + } + } + + JPanel propField = new JPanel(); + propField.setLayout(new GridLayout(2, 1)); + String path = local.getPath(); + if(OperatingSystem.isWindows() || OperatingSystem.isWindows9x() || OperatingSystem.isWindowsNT()) + { + path = path.substring(0, path.lastIndexOf(92)); // 92 = '\' + } + else + { + path = path.substring(0, path.lastIndexOf('/')); + } + propField.add(new JLabel(jEdit.getProperty("fileprop.path")+": "+path)); + propField.add(new JLabel(jEdit.getProperty("fileprop.size")+": "+MiscUtilities.formatFileSize(filesSize))); + Border etch = BorderFactory.createEtchedBorder(); + propField.setBorder(BorderFactory.createTitledBorder(etch, jEdit.getProperty("fileprop.properties"))); + centerPanel.add(BorderLayout.CENTER, propField); + + return centerPanel; + } //}}} + + //{{{ createSouthPanelAll() method + public JPanel createSouthPanelAll() + { + ButtonActionHandler actionHandler = new ButtonActionHandler(); + JPanel southPanel = new JPanel(new BorderLayout()); + + JPanel buttonsField = new JPanel(); + okButton = new JButton(jEdit.getProperty("fileprop.okBtn")); + buttonsField.add(okButton); + okButton.addActionListener(actionHandler); + cancelButton = new JButton(jEdit.getProperty("fileprop.cancelBtn")); + buttonsField.add(cancelButton); + cancelButton.addActionListener(actionHandler); + + southPanel.add(BorderLayout.EAST, buttonsField); + + return southPanel; + } //}}} + + //{{{ createNorthPanel() method + public JPanel createNorthPanel() + { + JPanel northPanel = new JPanel(new BorderLayout()); + + infoIcon = new JLabel(); + infoIcon.setIcon(UIManager.getIcon("OptionPane.informationIcon")); + northPanel.add(BorderLayout.WEST, infoIcon); + + JPanel nameField = new JPanel(); + nameField.add(new JLabel(jEdit.getProperty("fileprop.name")+": ")); + nameTextField = new JTextField(local.getName(), 20); + nameField.add(nameTextField); + northPanel.add(BorderLayout.CENTER, nameField); + northPanel.add(BorderLayout.SOUTH, new JPanel()); + + return northPanel; + } //}}} + + //{{{ createCenterPanel() method + public JPanel createCenterPanel() + { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm"); + + JPanel centerPanel = new JPanel(new BorderLayout()); + + JPanel propField = new JPanel(); + propField.setLayout(new GridLayout(4, 1)); + propField.add(new JLabel(jEdit.getProperty("fileprop.name")+": "+local.getName())); + propField.add(new JLabel(jEdit.getProperty("fileprop.path")+": "+local.getPath())); + propField.add(new JLabel(jEdit.getProperty("fileprop.lastmod")+": "+sdf.format((new java.util.Date(local.getModified()))))); + if(local.getType() == VFSFile.DIRECTORY) + { + File ioFile = new File(local.getPath()); + propField.add(new JLabel(jEdit.getProperty("fileprop.size")+": "+MiscUtilities.formatFileSize(IOUtilities.fileLength(ioFile)))); + } + else + { + propField.add(new JLabel(jEdit.getProperty("fileprop.size")+": "+MiscUtilities.formatFileSize(local.getLength()))); + } + Border etch = BorderFactory.createEtchedBorder(); + propField.setBorder(BorderFactory.createTitledBorder(etch, jEdit.getProperty("fileprop.properties"))); + centerPanel.add(BorderLayout.CENTER, propField); + + JPanel attributeField = new JPanel(); + attributeField.setLayout(new GridLayout(1, 2)); + readable = new JCheckBox(jEdit.getProperty("fileprop.readable")); + readable.setSelected(local.isReadable()); + readable.setEnabled(false); + attributeField.add(readable); + + write = new JCheckBox(jEdit.getProperty("fileprop.writeable")); + write.setSelected(local.isWriteable()); + write.setEnabled(false); + attributeField.add(write); + attributeField.setBorder(BorderFactory.createTitledBorder(etch, jEdit.getProperty("fileprop.attribute"))); + centerPanel.add(BorderLayout.SOUTH, attributeField); + + return centerPanel; + } //}}} + + //{{{ createSouthPanel() method + public JPanel createSouthPanel() + { + ButtonActionHandler actionHandler = new ButtonActionHandler(); + JPanel southPanel = new JPanel(new BorderLayout()); + + JPanel buttonsField = new JPanel(); + okButton = new JButton(jEdit.getProperty("fileprop.okBtn")); + buttonsField.add(okButton); + okButton.addActionListener(actionHandler); + cancelButton = new JButton(jEdit.getProperty("fileprop.cancelBtn")); + buttonsField.add(cancelButton); + cancelButton.addActionListener(actionHandler); + + southPanel.add(BorderLayout.EAST, buttonsField); + + return southPanel; + } //}}} + + //{{{ ok() method + public void ok() + { + if(this.nameTextField != null) + { + browser.rename(browser.getSelectedFiles()[0].getPath(), nameTextField.getText()); + } + + GUIUtilities.saveGeometry(this,"propdialog"); + setVisible(false); + } //}}} + + //{{{ cancel() method + public void cancel() + { + GUIUtilities.saveGeometry(this,"propdialog"); + setVisible(false); + } //}}} + + //{{{ ButtonActionHandler class + class ButtonActionHandler implements ActionListener + { + public void actionPerformed(ActionEvent evt) + { + Object source = evt.getSource(); + + + if(source == okButton) + { + ok(); + } + else if(source == cancelButton) + { + cancel(); + } + } + } //}}} +} Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-12-30 04:30:55 UTC (rev 14252) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2008-12-30 06:30:07 UTC (rev 14253) @@ -2298,6 +2298,8 @@ vfs.browser.home.icon=22x22/actions/go-home.png vfs.browser.home.label=Home Directory vfs.browser.home.shortcut=~ +vfs.browser.properties.label=Properties +vfs.browser.properties.title=File/Directory Properties vfs.browser.insert.label=Insert vfs.browser.new-directory.icon=22x22/actions/folder-new.png vfs.browser.new-directory.label=New Directory... @@ -2542,6 +2544,21 @@ #}}} +#{{{ File Properties Dialog +fileprop.name=Name +fileprop.path=Path +fileprop.lastmod=Last Modified +fileprop.size=Size +fileprop.properties=Properties +fileprop.readable=Readable +fileprop.writeable=Writeable +fileprop.attribute=Attribute +fileprop.okBtn=OK +fileprop.cancelBtn=Cancel +fileprop.selectedFiles=Selected files +fileprop.selectedDirectories=Selected directories +#}}} + errorwidget.popupmenu=logs-remove-all-errors logs-remove-all-errors.label=Remove all errors This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2008-12-30 10:15:41
|
Revision: 14254 http://jedit.svn.sourceforge.net/jedit/?rev=14254&view=rev Author: shlomy Date: 2008-12-30 10:15:37 +0000 (Tue, 30 Dec 2008) Log Message: ----------- When a directory in the top pane of the VFS browser is right-clicked, the Properties menu item should refer to that directory and not to the selected files in the bottom pane. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java Modified: jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-12-30 06:30:07 UTC (rev 14253) +++ jEdit/trunk/org/gjt/sp/jedit/browser/BrowserCommandsMenu.java 2008-12-30 10:15:37 UTC (rev 14254) @@ -122,7 +122,7 @@ add(createMenuItem("copy-path")); add(createMenuItem("paste")); - if( browser.getSelectedFiles().length != 0) + if((files.length == 1) || (browser.getSelectedFiles().length != 0)) add(createMenuItem("properties")); addSeparator(); Modified: jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2008-12-30 06:30:07 UTC (rev 14253) +++ jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2008-12-30 10:15:37 UTC (rev 14254) @@ -860,9 +860,9 @@ /** * Show selected file's properties. */ - public void fileProperties() + public void fileProperties(VFSFile[] files) { - new FilePropertiesDialog(view, this); + new FilePropertiesDialog(view, this, files); } //}}} //{{{ searchInDirectory() method Modified: jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml 2008-12-30 06:30:07 UTC (rev 14253) +++ jEdit/trunk/org/gjt/sp/jedit/browser.actions.xml 2008-12-30 10:15:37 UTC (rev 14254) @@ -141,7 +141,7 @@ <ACTION NAME="vfs.browser.properties"> <CODE> - browser.fileProperties(); + browser.fileProperties(files); </CODE> </ACTION> Modified: jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java 2008-12-30 06:30:07 UTC (rev 14253) +++ jEdit/trunk/org/gjt/sp/jedit/gui/FilePropertiesDialog.java 2008-12-30 10:15:37 UTC (rev 14254) @@ -40,7 +40,7 @@ * @param view The view * @param browser The VFSBrowser */ - public FilePropertiesDialog(View view, VFSBrowser browser) + public FilePropertiesDialog(View view, VFSBrowser browser, VFSFile[] files) { super(view,jEdit.getProperty("vfs.browser.properties.title"),true); GUIUtilities.loadGeometry(this,"propdialog"); @@ -48,7 +48,10 @@ this.browser = browser; this.view = view; - this.selectedFiles = browser.getSelectedFiles(); + if (files.length > 0) + this.selectedFiles = files; + else + this.selectedFiles = browser.getSelectedFiles(); this.local = (LocalFile)selectedFiles[0]; createAndShowGUI(); } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2009-01-02 22:20:24
|
Revision: 14287 http://jedit.svn.sourceforge.net/jedit/?rev=14287&view=rev Author: ezust Date: 2009-01-02 22:20:14 +0000 (Fri, 02 Jan 2009) Log Message: ----------- If "never mark untitled buffers dirty" is selected, we might have contents in non-dirty buffers. We must clear those contents if user requested new file and we are reusing an untitled buffer. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java jEdit/trunk/org/gjt/sp/jedit/jEdit.java Modified: jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2009-01-02 17:28:44 UTC (rev 14286) +++ jEdit/trunk/org/gjt/sp/jedit/browser/VFSBrowser.java 2009-01-02 22:20:14 UTC (rev 14287) @@ -48,7 +48,7 @@ /** * The main class of the VFS browser. * Used as dockable, and also embedded inside the - * VFSFileSelectorDialog. + * VFSFileChooserDialog. * * @author Slava Pestov * @version $Id$ Modified: jEdit/trunk/org/gjt/sp/jedit/jEdit.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2009-01-02 17:28:44 UTC (rev 14286) +++ jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2009-01-02 22:20:14 UTC (rev 14287) @@ -1758,6 +1758,14 @@ { if (buf.isUntitled() && !buf.isDirty()) { + /* if "never mark untitled buffers dirty" + * is selected, we might have contents in non-dirty + * untitled buffers. We must clear those contents + * if user requested new file. + */ + int l = buf.getLength(); + if (l > 0) + buf.remove(0, l); editPane.setBuffer(buf); return buf; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-01-24 06:20:02
|
Revision: 14444 http://jedit.svn.sourceforge.net/jedit/?rev=14444&view=rev Author: shlomy Date: 2009-01-24 06:19:57 +0000 (Sat, 24 Jan 2009) Log Message: ----------- Added a comment in 'TextArea.getNextVisibleLine' for the case in which there is no next visible line. Removed a compilation 'unchecked' warning in OptionGroup. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java Modified: jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2009-01-24 00:49:00 UTC (rev 14443) +++ jEdit/trunk/org/gjt/sp/jedit/OptionGroup.java 2009-01-24 06:19:57 UTC (rev 14444) @@ -41,7 +41,7 @@ // {{{ data members protected final String name; protected final String label; - protected final Vector members; + protected final Vector<Object> members; private boolean sort; // }}} @@ -57,7 +57,7 @@ { this.name = name; label = jEdit.getProperty("options." + name + ".label"); - members = new Vector(); + members = new Vector<Object>(); } //}}} //{{{ OptionGroup constructor @@ -71,7 +71,7 @@ { this.name = name; this.label = label; - members = new Vector(); + members = new Vector<Object>(); StringTokenizer st = new StringTokenizer(options); while(st.hasMoreTokens()) @@ -124,7 +124,7 @@ } //}}} //{{{ getMembers() method - public Enumeration getMembers() + public Enumeration<Object> getMembers() { return members.elements(); } //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java 2009-01-24 00:49:00 UTC (rev 14443) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/DisplayManager.java 2009-01-24 06:19:57 UTC (rev 14444) @@ -151,7 +151,8 @@ //{{{ getNextVisibleLine() method /** - * Returns the next visible line after the specified line index. + * Returns the next visible line after the specified line index, + * or (-1) if there is no next visible line. * @param line A physical line index * @since jEdit 4.0pre1 */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-01-29 22:55:22
|
Revision: 14514 http://jedit.svn.sourceforge.net/jedit/?rev=14514&view=rev Author: shlomy Date: 2009-01-29 21:59:42 +0000 (Thu, 29 Jan 2009) Log Message: ----------- Added optional highlighting of hypersearch result matches in the hypersearch results dockable. A button in the dockable toggles the highlighting. The highlighting is currently done by displaying the matches in bold. This is a partial solution for feature request #2446121. All highlighting is currently in bold, it's not configurable and does not involve coloring. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java Added Paths: ----------- jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-highlight-match.png jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-normal-match.png jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-highlight-match.png jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-normal-match.png Added: jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-highlight-match.png =================================================================== (Binary files differ) Property changes on: jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-highlight-match.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-normal-match.png =================================================================== (Binary files differ) Property changes on: jEdit/trunk/org/gjt/sp/jedit/icons/themes/classic/22x22/actions/edit-find-normal-match.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-highlight-match.png =================================================================== (Binary files differ) Property changes on: jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-highlight-match.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-normal-match.png =================================================================== (Binary files differ) Property changes on: jEdit/trunk/org/gjt/sp/jedit/icons/themes/tango/22x22/actions/edit-find-normal-match.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-01-29 20:03:35 UTC (rev 14513) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-01-29 21:59:42 UTC (rev 14514) @@ -1426,6 +1426,9 @@ hypersearch-results.multi.label=Toggle Multiple Results hypersearch-results.multi.multiple.icon=22x22/actions/edit-find-multiple.png hypersearch-results.multi.single.icon=22x22/actions/edit-find-single.png +hypersearch-results.highlight.label=Toggle Match Highlighting +hypersearch-results.match.highlight.icon=22x22/actions/edit-find-highlight-match.png +hypersearch-results.match.normal.icon=22x22/actions/edit-find-normal-match.png hypersearch-results.file-caption={0} ({1,choice,1#1 occurrence|1<{1,number,integer} occurrences in '{2,choice,1#1 line|1<{2,number,integer} lines}'}) hypersearch-results.searching=Searching for "{0}"... hypersearch-results.no-results=No results found for "{0}". Modified: jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java 2009-01-29 20:03:35 UTC (rev 14513) +++ jEdit/trunk/org/gjt/sp/jedit/search/HyperSearchResults.java 2009-01-29 21:59:42 UTC (rev 14514) @@ -33,6 +33,7 @@ import org.gjt.sp.jedit.gui.DefaultFocusComponent; import org.gjt.sp.jedit.gui.RolloverButton; import org.gjt.sp.jedit.msg.*; +import org.gjt.sp.jedit.search.SearchMatcher.Match; import org.gjt.sp.jedit.*; //}}} @@ -45,6 +46,7 @@ DefaultFocusComponent { public static final String NAME = "hypersearch-results"; + public static final String HIGHLIGHT_PROP = "hypersearch.results.highlight"; //{{{ HyperSearchResults constructor public HyperSearchResults(View view) @@ -61,6 +63,12 @@ ActionHandler ah = new ActionHandler(); + highlight = new RolloverButton(); + highlight.setToolTipText(jEdit.getProperty( + "hypersearch-results.highlight.label")); + highlight.addActionListener(ah); + toolBar.add(highlight); + clear = new RolloverButton(GUIUtilities.loadIcon( jEdit.getProperty("hypersearch-results.clear.icon"))); clear.setToolTipText(jEdit.getProperty( @@ -78,7 +86,7 @@ resultTreeRoot = new DefaultMutableTreeNode(); resultTreeModel = new DefaultTreeModel(resultTreeRoot); - resultTree = new JTree(resultTreeModel); + resultTree = new HighlightingTree(resultTreeModel); resultTree.setToolTipText(null); resultTree.setCellRenderer(new ResultCellRenderer()); resultTree.setVisibleRowCount(16); @@ -118,6 +126,7 @@ EditBus.addToBus(this); multiStatus = jEdit.getBooleanProperty( "hypersearch-results.multi"); + updateHighlightStatus(); updateMultiStatus(); } //}}} @@ -298,10 +307,20 @@ private DefaultMutableTreeNode resultTreeRoot; private DefaultTreeModel resultTreeModel; + private RolloverButton highlight; private RolloverButton clear; private RolloverButton multi; private boolean multiStatus; + //{{{ updateHighlightStatus() method + private void updateHighlightStatus() + { + if (jEdit.getBooleanProperty(HIGHLIGHT_PROP)) + highlight.setIcon(GUIUtilities.loadIcon(jEdit.getProperty("hypersearch-results.match.highlight.icon"))); + else + highlight.setIcon(GUIUtilities.loadIcon(jEdit.getProperty("hypersearch-results.match.normal.icon"))); + } //}}} + //{{{ updateMultiStatus() method private void updateMultiStatus() { @@ -422,8 +441,14 @@ public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); - if(source == clear) + if(source == highlight) { + jEdit.setBooleanProperty(HIGHLIGHT_PROP, + ! jEdit.getBooleanProperty(HIGHLIGHT_PROP)); + updateHighlightStatus(); + } + else if(source == clear) + { removeAllNodes(); } else if(source == multi) @@ -444,6 +469,67 @@ } } //}}} + //{{{ HighlightingTree class + class HighlightingTree extends JTree + { + public HighlightingTree(DefaultTreeModel model) + { + super(model); + } + + @Override + public String convertValueToText(Object value, boolean selected, + boolean expanded, boolean leaf, int row, boolean hasFocus) + { + String s = super.convertValueToText(value, selected, expanded, leaf, + row, hasFocus); + if (! jEdit.getBooleanProperty(HIGHLIGHT_PROP)) + return s; + DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; + while ((node != null) && + (! (node.getUserObject() instanceof HyperSearchOperationNode))) + { + node = (DefaultMutableTreeNode) node.getParent(); + } + if (node == null) + return s; + SearchMatcher matcher = + ((HyperSearchOperationNode) node.getUserObject()).getSearchMatcher(); + StringBuffer sb = new StringBuffer("<html><body>"); + int i = 0; + Match m = null; + while ((m = matcher.nextMatch(s.substring(i), true, true, true, false)) != null) + { + appendString2html(sb, s.substring(i, i + m.start)); + sb.append("<b>"); + appendString2html(sb, s.substring(i + m.start, i + m.end)); + sb.append("</b>"); + i += m.end; + } + appendString2html(sb, s.substring(i)); + sb.append("</body></html>"); + return sb.toString(); + } + + private void appendString2html(StringBuffer sb, String s) + { + for (int i = 0; i < s.length(); i++) + { + char c = s.charAt(i); + String r; + switch (c) { + case '"': r = """; break; + case '\'': r = "'"; break; + case '&': r = "&"; break; + case '<': r = "<"; break; + case '>': r = ">"; break; + default: r = String.valueOf(c); break; + } + sb.append(r); + } + } + } //}}} + //{{{ KeyHandler class class KeyHandler extends KeyAdapter { @@ -750,7 +836,7 @@ class ResultCellRenderer extends DefaultTreeCellRenderer { Font plainFont, boldFont; - + //{{{ ResultCellRenderer constructor ResultCellRenderer() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-02-06 14:17:00
|
Revision: 14587 http://jedit.svn.sourceforge.net/jedit/?rev=14587&view=rev Author: shlomy Date: 2009-02-06 14:16:54 +0000 (Fri, 06 Feb 2009) Log Message: ----------- Fixed the tooltip for the hypersearch result higlighting button, and set a default style like in eclipse, which is quite similar to selected items in the tree. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/jedit.props jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-02-06 10:33:18 UTC (rev 14586) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-02-06 14:16:54 UTC (rev 14587) @@ -98,6 +98,9 @@ # When this limit is reached a dialog appears to cancel the search hypersearch.maxWarningResults=1000 +# Style for highlighting matches in hypersearch results +hypersearch.results.highlight=bgColor:#ccccff + # Confirm dialogs confirmSaveAll=true Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-02-06 10:33:18 UTC (rev 14586) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-02-06 14:16:54 UTC (rev 14587) @@ -1426,7 +1426,7 @@ hypersearch-results.multi.label=Toggle Multiple Results hypersearch-results.multi.multiple.icon=22x22/actions/edit-find-multiple.png hypersearch-results.multi.single.icon=22x22/actions/edit-find-single.png -hypersearch-results.highlight.label=Toggle Match Highlighting +hypersearch-results.highlight.label=Set Match Highlight Style hypersearch-results.match.highlight.icon=22x22/actions/edit-find-highlight-match.png hypersearch-results.match.normal.icon=22x22/actions/edit-find-normal-match.png hypersearch-results.file-caption={0} ({1,choice,1#1 occurrence|1<{1,number,integer} occurrences in '{2,choice,1#1 line|1<{2,number,integer} lines}'}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-02-06 16:48:23
|
Revision: 14592 http://jedit.svn.sourceforge.net/jedit/?rev=14592&view=rev Author: shlomy Date: 2009-02-06 16:48:20 +0000 (Fri, 06 Feb 2009) Log Message: ----------- Implemented feature request #2555956: Show presence of jedit server. The about dialog now shows the jEdit mode: standalone / server / server-background. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/gui/AboutDialog.java jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props Modified: jEdit/trunk/org/gjt/sp/jedit/gui/AboutDialog.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/AboutDialog.java 2009-02-06 14:47:05 UTC (rev 14591) +++ jEdit/trunk/org/gjt/sp/jedit/gui/AboutDialog.java 2009-02-06 16:48:20 UTC (rev 14592) @@ -110,7 +110,17 @@ AboutPanel() { - String[] args = { jEdit.getVersion(), System.getProperty("java.version") }; + String mode; + if (jEdit.getEditServer() != null) + { + if (jEdit.isBackgroundModeEnabled()) + mode = jEdit.getProperty("about.mode.server-background"); + else + mode = jEdit.getProperty("about.mode.server"); + } + else + mode = jEdit.getProperty("about.mode.standalone"); + String[] args = { jEdit.getVersion(), mode, System.getProperty("java.version") }; sBottomLine = jEdit.getProperty("about.version",args); setFont(defaultFont); fm = getFontMetrics(defaultFont); Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-02-06 14:47:05 UTC (rev 14591) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-02-06 16:48:20 UTC (rev 14592) @@ -929,7 +929,10 @@ #{{{ About dialog about.title=About jEdit -about.version=jEdit {0} using Java {1} +about.version=jEdit {0} {1} mode, using Java {2} +about.mode.standalone=standalone +about.mode.server=server +about.mode.server-background=server-background # This text scrolls by in the about dialog box. # Hack: Since StringTokenizer treats two consequent \n as one token, we This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2009-02-07 23:52:44
|
Revision: 14601 http://jedit.svn.sourceforge.net/jedit/?rev=14601&view=rev Author: kpouer Date: 2009-02-07 23:52:40 +0000 (Sat, 07 Feb 2009) Log Message: ----------- use of JEditBuffer.LINESEP constant Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/LineSepWidgetFactory.java jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/LineSepWidgetFactory.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/LineSepWidgetFactory.java 2009-02-07 23:28:51 UTC (rev 14600) +++ jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/LineSepWidgetFactory.java 2009-02-07 23:52:40 UTC (rev 14601) @@ -35,6 +35,7 @@ import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.buffer.JEditBuffer; /** * @author Matthieu Casanova @@ -56,7 +57,7 @@ private final View view; //{{{ LineSepWidget constructor - public LineSepWidget(final View view) + LineSepWidget(final View view) { lineSep = new ToolTipLabel(); lineSep.setHorizontalAlignment(SwingConstants.CENTER); @@ -84,7 +85,7 @@ public void update() { Buffer buffer = view.getBuffer(); - String lineSep = buffer.getStringProperty("lineSeparator"); + String lineSep = buffer.getStringProperty(JEditBuffer.LINESEP); if("\n".equals(lineSep)) this.lineSep.setText("U"); else if("\r\n".equals(lineSep)) Modified: jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java 2009-02-07 23:28:51 UTC (rev 14600) +++ jEdit/trunk/org/gjt/sp/jedit/options/BufferOptionPane.java 2009-02-07 23:52:40 UTC (rev 14601) @@ -229,7 +229,7 @@ oldLineSep = System.getProperty("line.separator"); if(!oldLineSep.equals(lineSep)) { - buffer.setStringProperty("lineSeparator",lineSep); + buffer.setStringProperty(JEditBuffer.LINESEP, lineSep); buffer.setDirty(true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sc...@us...> - 2009-02-19 16:37:34
|
Revision: 14679 http://jedit.svn.sourceforge.net/jedit/?rev=14679&view=rev Author: scarlac Date: 2009-02-19 16:37:29 +0000 (Thu, 19 Feb 2009) Log Message: ----------- * Mac settings are now stored in $HOME/Library/jEdit. Old settings are migrated to new location automagicly. * Scrolling pages is now done with shift plus ctrl Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/jEdit.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java Modified: jEdit/trunk/org/gjt/sp/jedit/jEdit.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2009-02-18 20:25:29 UTC (rev 14678) +++ jEdit/trunk/org/gjt/sp/jedit/jEdit.java 2009-02-19 16:37:29 UTC (rev 14679) @@ -119,6 +119,9 @@ mainThread = Thread.currentThread(); settingsDirectory = ".jedit"; + // On mac, different rules (should) apply + if(OperatingSystem.isMacOS()) + settingsDirectory = "Library/jEdit"; // MacOS users expect the app to keep running after all windows // are closed @@ -136,6 +139,7 @@ boolean runStartupScripts = true; boolean quit = false; boolean wait = false; + boolean shouldRelocateSettings = true; String userDir = System.getProperty("user.dir"); // script to run @@ -178,7 +182,10 @@ else if(arg.equals("-nosettings")) settingsDirectory = null; else if(arg.startsWith("-settings=")) + { settingsDirectory = arg.substring(10); + shouldRelocateSettings = false; + } else if(arg.startsWith("-noserver")) portFile = null; else if(arg.equals("-server")) @@ -322,6 +329,13 @@ if(!new File(settingsDirectory,"nosplash").exists()) GUIUtilities.showSplashScreen(); + //{{{ Mac settings migration code. Should eventually be removed + if(OperatingSystem.isMacOS() && shouldRelocateSettings && settingsDirectory != null) + { + relocateSettings(); + } + // }}} + //{{{ Initialize settings directory Writer stream; if(settingsDirectory != null) @@ -2487,7 +2501,30 @@ //}}} //{{{ Miscellaneous methods - + + //{{{ relocateSettings() method + public static void relocateSettings() + { + String oldSettingsPath = MiscUtilities.constructPath( + System.getProperty("user.home"), + ".jedit"); + File oldSettingsDir = new File(oldSettingsPath); + File newSettingsDir = new File(settingsDirectory); + if(oldSettingsDir.exists() && !newSettingsDir.exists()) + { + Log.log(Log.NOTICE,jEdit.class,"Old settings directory found (HOME/.jedit). Moving to new location ("+newSettingsDir+")"); + try + { + oldSettingsDir.renameTo(newSettingsDir); + } + catch(SecurityException se) + { + Log.log(Log.ERROR,jEdit.class,se); + } + } + } + //}}} + //{{{ isStartupDone() method /** * Whether jEdit startup is over. Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-02-18 20:25:29 UTC (rev 14678) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-02-19 16:37:29 UTC (rev 14679) @@ -6152,6 +6152,13 @@ scrollUpPage(); } } + else if(e.isControlDown() && e.isShiftDown()) + { + if(e.getWheelRotation() > 0) + scrollDownPage(); + else + scrollUpPage(); + } else if(e.isControlDown()) { setFirstLine(getFirstLine() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2009-03-17 22:43:30
|
Revision: 14793 http://jedit.svn.sourceforge.net/jedit/?rev=14793&view=rev Author: ezust Date: 2009-03-17 22:43:27 +0000 (Tue, 17 Mar 2009) Log Message: ----------- Got rid of EditBus messages from Registers class, and moved it into jEditTextArea. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/Registers.java jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java Modified: jEdit/trunk/org/gjt/sp/jedit/Registers.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/Registers.java 2009-03-17 22:12:32 UTC (rev 14792) +++ jEdit/trunk/org/gjt/sp/jedit/Registers.java 2009-03-17 22:43:27 UTC (rev 14793) @@ -29,7 +29,6 @@ import org.gjt.sp.jedit.buffer.JEditBuffer; import org.gjt.sp.jedit.gui.HistoryModel; -import org.gjt.sp.jedit.msg.PositionChanging; import org.gjt.sp.jedit.textarea.TextArea; import org.gjt.sp.jedit.textarea.Selection; import org.gjt.sp.util.Log; @@ -219,7 +218,6 @@ return; } JEditBuffer buffer = textArea.getBuffer(); - EditBus.send(new PositionChanging(textArea)); try { buffer.beginCompoundEdit(); Modified: jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2009-03-17 22:12:32 UTC (rev 14792) +++ jEdit/trunk/org/gjt/sp/jedit/bufferset/BufferSetManager.java 2009-03-17 22:43:27 UTC (rev 14793) @@ -32,7 +32,8 @@ //}}} /** - * The buffersets manager. + * The buffersets manager. A singleton instance of this + * can be obtained from jEdit.getBufferSetManager() * * @author Matthieu Casanova * @since jEdit 4.3pre15 Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java 2009-03-17 22:12:32 UTC (rev 14792) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/JEditTextArea.java 2009-03-17 22:43:27 UTC (rev 14793) @@ -158,6 +158,14 @@ EditBus.send(new PositionChanging(this)); super.goToBufferStart(select); } // }}} + + // {{{ replaceSelection(String) + @Override + public int replaceSelection(String selectedText) + { + EditBus.send(new PositionChanging(this)); + return super.replaceSelection(selectedText); + }//}}} //{{{ showGoToLineDialog() method /** @@ -560,4 +568,5 @@ } } //}}} + } Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-03-17 22:12:32 UTC (rev 14792) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-03-17 22:43:27 UTC (rev 14793) @@ -1,5 +1,5 @@ /* - * TextArea.java - Handles services.xml files in plugins + * TextArea.java - Standalone jEdit Text Area component * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * @@ -2013,17 +2013,16 @@ throw new RuntimeException("Text component read only"); int newCaret = -1; - if(getSelectionCount() == 0) { // for compatibility with older jEdit versions buffer.insert(caret,selectedText); + newCaret = getCaretPosition() + selectedText.length(); } else { try { - buffer.beginCompoundEdit(); Selection[] selection = getSelection(); @@ -2213,7 +2212,6 @@ throw new IllegalArgumentException("caret out of bounds: " + newCaret); } - int oldCaretLine = caretLine; if(caret == newCaret) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-03-19 21:28:43
|
Revision: 14799 http://jedit.svn.sourceforge.net/jedit/?rev=14799&view=rev Author: shlomy Date: 2009-03-19 21:28:35 +0000 (Thu, 19 Mar 2009) Log Message: ----------- Implemented feature request #2668434: fullscreen-mode. The implementation may be partial; the menu bar, tool bar and status bar are currently visible in full-screen mode, where usually the intention is to show only the text area. Fullscreen mode is toggled using the action "toggle-full-screen", with a default shortcut of F11. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/View.java jEdit/trunk/org/gjt/sp/jedit/actions.xml jEdit/trunk/org/gjt/sp/jedit/jedit_keys.props Modified: jEdit/trunk/org/gjt/sp/jedit/View.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/View.java 2009-03-19 11:50:45 UTC (rev 14798) +++ jEdit/trunk/org/gjt/sp/jedit/View.java 2009-03-19 21:28:35 UTC (rev 14799) @@ -30,6 +30,8 @@ import java.awt.Cursor; import java.awt.Dimension; import java.awt.Frame; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; @@ -1321,6 +1323,7 @@ //{{{ View constructor View(Buffer buffer, ViewConfig config) { + fullScreenMode = false; plainView = config.plainView; enableEvents(AWTEvent.KEY_EVENT_MASK); @@ -1369,6 +1372,29 @@ GUIUtilities.addSizeSaver(this, null, plainView ? "plain-view" : "view"); } //}}} + //{{{ toggleFullScreen() method + public void toggleFullScreen() + { + fullScreenMode = (! fullScreenMode); + GraphicsDevice sd = GraphicsEnvironment. + getLocalGraphicsEnvironment().getDefaultScreenDevice(); + dispose(); + if (fullScreenMode) + { + windowedBounds = getBounds(); + setUndecorated(true); + setBounds(sd.getDefaultConfiguration().getBounds()); + validate(); + setVisible(true); + } + else + { + setUndecorated(false); + setBounds(windowedBounds); + setVisible(true); + } + } //}}} + //{{{ confirmToCloseDirty() methods /** * If the view contains dirty buffers which will be closed on @@ -1481,6 +1507,9 @@ private Socket waitSocket; private Component mainContent; + private boolean fullScreenMode; + private Rectangle windowedBounds; + //}}} //{{{ setMainContent() method Modified: jEdit/trunk/org/gjt/sp/jedit/actions.xml =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/actions.xml 2009-03-19 11:50:45 UTC (rev 14798) +++ jEdit/trunk/org/gjt/sp/jedit/actions.xml 2009-03-19 21:28:35 UTC (rev 14799) @@ -1364,6 +1364,12 @@ </CODE> </ACTION> +<ACTION NAME="toggle-full-screen"> + <CODE> + view.toggleFullScreen(); + </CODE> +</ACTION> + <ACTION NAME="toggle-line-numbers"> <CODE> textArea.getGutter().toggleExpanded(); Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_keys.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_keys.props 2009-03-19 11:50:45 UTC (rev 14798) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_keys.props 2009-03-19 21:28:35 UTC (rev 14799) @@ -112,6 +112,7 @@ top-docking-area.shortcut=C+e C+UP right-docking-area.shortcut=C+e C+RIGHT bottom-docking-area.shortcut=C+e C+DOWN +toggle-full-screen.shortcut=F11 prev-marker.shortcut=C+e C+COMMA next-marker.shortcut=C+e C+PERIOD This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-03-20 13:29:21
|
Revision: 14804 http://jedit.svn.sourceforge.net/jedit/?rev=14804&view=rev Author: shlomy Date: 2009-03-20 13:29:12 +0000 (Fri, 20 Mar 2009) Log Message: ----------- Added options to include or exclude any of the following in full-screen mode: menu bar, toolbars, status bar. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/View.java jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/options/ViewOptionPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/View.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/View.java 2009-03-20 10:56:23 UTC (rev 14803) +++ jEdit/trunk/org/gjt/sp/jedit/View.java 2009-03-20 13:29:12 UTC (rev 14804) @@ -1377,8 +1377,38 @@ fullScreenMode = (! fullScreenMode); GraphicsDevice sd = getGraphicsConfiguration().getDevice(); dispose(); + boolean alternateLayout = jEdit.getBooleanProperty( + "view.toolbar.alternateLayout"); + boolean showMenu = jEdit.getBooleanProperty("options.view.fullScreenIncludesMenu"); + boolean showToolbars = jEdit.getBooleanProperty("options.view.fullScreenIncludesToolbars"); + boolean showStatus = jEdit.getBooleanProperty("options.view.fullScreenIncludesStatus"); if (fullScreenMode) { + if (! showMenu) + { + menuBar = getJMenuBar(); + setJMenuBar(null); + } + if (alternateLayout) + { + if (! showToolbars) + { + getContentPane().remove(topToolBars); + getContentPane().remove(bottomToolBars); + } + if (! showStatus) + removeToolBar(status); + } + else + { + if (! showToolbars) + { + mainPanel.remove(topToolBars); + mainPanel.remove(bottomToolBars); + } + if (! showStatus) + getContentPane().remove(status); + } windowedBounds = getBounds(); setUndecorated(true); setBounds(sd.getDefaultConfiguration().getBounds()); @@ -1387,6 +1417,28 @@ } else { + if (! showMenu) + setJMenuBar(menuBar); + if (alternateLayout) + { + if (! showToolbars) + { + getContentPane().add(BorderLayout.NORTH,topToolBars); + getContentPane().add(BorderLayout.SOUTH,bottomToolBars); + } + if (! showStatus) + addToolBar(BOTTOM_GROUP,STATUS_BAR_LAYER,status); + } + else + { + if (! showToolbars) + { + mainPanel.add(topToolBars, BorderLayout.NORTH); + mainPanel.add(bottomToolBars, BorderLayout.SOUTH); + } + if (! showStatus) + getContentPane().add(BorderLayout.SOUTH,status); + } setUndecorated(false); setBounds(windowedBounds); setVisible(true); @@ -1507,6 +1559,7 @@ private boolean fullScreenMode; private Rectangle windowedBounds; + private JMenuBar menuBar; //}}} Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-03-20 10:56:23 UTC (rev 14803) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-03-20 13:29:12 UTC (rev 14804) @@ -2123,11 +2123,18 @@ options.view.bufferSwitcherMaxRowsCount=Visible rows in buffer switcher: options.view.sortBuffers=Sort buffer sets options.view.sortByName=Sort buffer sets by file name, instead of path name +options.view.fullScreenIncludesMenu=Show the menu bar in full-screen mode +options.view.fullScreenIncludesToolbar=Show the toolbars in full-screen mode +options.view.fullScreenIncludesStatus=Show the status bar in full-screen mode options.editpane.bufferset.default=BufferSet scope for new EditPanes: options.editpane.bufferset.contain=New BufferSets contain: options.editpane.bufferset.newbufferset.copy=copy of current BufferSet options.editpane.bufferset.newbufferset.empty=an empty buffer options.editpane.bufferset.newbufferset.currentbuffer=current buffer only + +fullScreenIncludesMenu=true +fullScreenIncludesToolbars=true +fullScreenIncludesStatus=true #}}} Modified: jEdit/trunk/org/gjt/sp/jedit/options/ViewOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/ViewOptionPane.java 2009-03-20 10:56:23 UTC (rev 14803) +++ jEdit/trunk/org/gjt/sp/jedit/options/ViewOptionPane.java 2009-03-20 13:29:12 UTC (rev 14804) @@ -159,8 +159,23 @@ sortByName.setEnabled(sortBuffers.isSelected()); addComponent(sortByName); + fullScreenIncludesMenu = new JCheckBox(jEdit.getProperty( + "options.view.fullScreenIncludesMenu")); + fullScreenIncludesMenu.setSelected( + jEdit.getBooleanProperty("fullScreenIncludesMenu")); + addComponent(fullScreenIncludesMenu); + fullScreenIncludesToolbar = new JCheckBox(jEdit.getProperty( + "options.view.fullScreenIncludesToolbar")); + fullScreenIncludesToolbar.setSelected( + jEdit.getBooleanProperty("fullScreenIncludesToolbar")); + addComponent(fullScreenIncludesToolbar); + fullScreenIncludesStatus = new JCheckBox(jEdit.getProperty( + "options.view.fullScreenIncludesStatus")); + fullScreenIncludesStatus.setSelected( + jEdit.getBooleanProperty("fullScreenIncludesStatus")); + addComponent(fullScreenIncludesStatus); } //}}} @@ -189,6 +204,9 @@ ((BufferSetManager.NewBufferSetAction)newBufferSetBehavior.getSelectedItem()).getName()); jEdit.setBooleanProperty("sortBuffers",sortBuffers.isSelected()); jEdit.setBooleanProperty("sortByName",sortByName.isSelected()); + jEdit.setBooleanProperty("fullScreenIncludesMenu",fullScreenIncludesMenu.isSelected()); + jEdit.setBooleanProperty("fullScreenIncludesToolbar",fullScreenIncludesToolbar.isSelected()); + jEdit.setBooleanProperty("fullScreenIncludesStatus",fullScreenIncludesStatus.isSelected()); } //}}} @@ -205,7 +223,10 @@ private JComboBox newBufferSetBehavior; private JCheckBox sortBuffers; private JCheckBox sortByName; - + private JCheckBox fullScreenIncludesMenu; + private JCheckBox fullScreenIncludesToolbar; + private JCheckBox fullScreenIncludesStatus; + //}}} //{{{ ActionHandler class This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-04-02 17:03:24
|
Revision: 14889 http://jedit.svn.sourceforge.net/jedit/?rev=14889&view=rev Author: shlomy Date: 2009-04-02 17:03:22 +0000 (Thu, 02 Apr 2009) Log Message: ----------- Fixed bug #2609091: Windows appear out of view When loading the view location and size from perspective.xml, check that the view bounds are inside the screen, and if not, fix them. Such cases can happen, for example, if a user worked in a dual monitor environment, where the view was in the 2nd monitor, and then restarted jEdit in a single monitor environment. The coordinates of the view in this case will be outside the single monitor boundaries, and the view will be hidden if not corrected. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/View.java jEdit/trunk/org/gjt/sp/jedit/jedit.props Modified: jEdit/trunk/org/gjt/sp/jedit/View.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/View.java 2009-04-02 15:33:57 UTC (rev 14888) +++ jEdit/trunk/org/gjt/sp/jedit/View.java 2009-04-02 17:03:22 UTC (rev 14889) @@ -31,6 +31,7 @@ import java.awt.Dimension; import java.awt.Frame; import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; @@ -2171,20 +2172,40 @@ } } //}}} + // Checks if the specified rectangle is within screen boundaries + private boolean isInsideScreen(View parent, Rectangle r) + { + Rectangle bounds; + if (parent == null) + bounds = GraphicsEnvironment.getLocalGraphicsEnvironment(). + getMaximumWindowBounds(); + else + bounds = parent.getGraphicsConfiguration().getBounds(); + int minWidth = jEdit.getIntegerProperty("view.minStartupWidth"); + int minHeight = jEdit.getIntegerProperty("view.minStartupHeight"); + return (r.x < bounds.width - minWidth && + r.x + r.width > minWidth && + r.y < bounds.height - minHeight && + r.y + r.height > minHeight); + } + public void adjust(View parent, ViewConfig config) { if(config.width != 0 && config.height != 0) { Rectangle desired = new Rectangle( config.x, config.y, config.width, config.height); - if(OperatingSystem.isX11() && Debug.GEOMETRY_WORKAROUND) - { - new GUIUtilities.UnixWorkaround(this,"view",desired,config.extState); - } + if (! isInsideScreen(parent, desired)) + setLocationRelativeTo(parent); else { - setBounds(desired); - setExtendedState(config.extState); + if(OperatingSystem.isX11() && Debug.GEOMETRY_WORKAROUND) + new GUIUtilities.UnixWorkaround(this,"view",desired,config.extState); + else + { + setBounds(desired); + setExtendedState(config.extState); + } } } else Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-02 15:33:57 UTC (rev 14888) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-02 17:03:22 UTC (rev 14889) @@ -246,6 +246,10 @@ # as if selection mode were rectangular mode view.ctrlForRectangularSelection=true +# Minimal view size that is considered "valid" when loading perspective +view.minStartupWidth=200 +view.minStartupHeight=200 + # The default bufferSet scope editpane.bufferset.default=global This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-04-21 02:18:35
|
Revision: 14964 http://jedit.svn.sourceforge.net/jedit/?rev=14964&view=rev Author: shlomy Date: 2009-04-21 02:18:31 +0000 (Tue, 21 Apr 2009) Log Message: ----------- Committed patch #2763968: Select text lines from gutter. This resolves feature requests: #2696564: Text Block Selection via Gutter Right-Click #1730845: Select line from gutter Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java jEdit/trunk/org/gjt/sp/jedit/actions.xml jEdit/trunk/org/gjt/sp/jedit/jedit.props jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java Added Paths: ----------- jEdit/trunk/org/gjt/sp/jedit/textarea/GutterPopupHandler.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2009-04-21 02:18:31 UTC (rev 14964) @@ -25,7 +25,6 @@ //{{{ Imports import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Container; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics2D; @@ -46,9 +45,11 @@ import org.gjt.sp.jedit.msg.BufferUpdate; import org.gjt.sp.jedit.msg.EditPaneUpdate; import org.gjt.sp.jedit.msg.PropertiesChanged; +import org.gjt.sp.jedit.options.GutterOptionPane; import org.gjt.sp.jedit.syntax.SyntaxStyle; import org.gjt.sp.jedit.textarea.AntiAlias; import org.gjt.sp.jedit.textarea.Gutter; +import org.gjt.sp.jedit.textarea.GutterPopupHandler; import org.gjt.sp.jedit.textarea.JEditTextArea; import org.gjt.sp.jedit.textarea.MouseHandler; import org.gjt.sp.jedit.textarea.Selection; @@ -57,7 +58,6 @@ import org.gjt.sp.jedit.textarea.TextAreaExtension; import org.gjt.sp.jedit.textarea.TextAreaPainter; import org.gjt.sp.jedit.textarea.TextAreaTransferHandler; -import org.gjt.sp.util.Log; import org.gjt.sp.util.SyntaxUtilities; //}}} @@ -903,7 +903,19 @@ textArea.setMouseHandler(new MouseHandler(textArea)); textArea.setTransferHandler(new TextAreaTransferHandler()); markerHighlight = new MarkerHighlight(); + textArea.getGutter().setGutterEnabled( + GutterOptionPane.isGutterEnabled()); textArea.getGutter().addExtension(markerHighlight); + textArea.getGutter().setSelectionPopupHandler( + new GutterPopupHandler() + { + public void handlePopup(int x, int y, int line) { + Buffer buffer = getBuffer(); + buffer.addOrRemoveMarker('\0', + buffer.getLineStartOffset(line)); + } + }); + textArea.addStatusListener(new StatusHandler()); add(BorderLayout.CENTER,textArea); @@ -1012,6 +1024,7 @@ } gutter.setFont(jEdit.getFontProperty("view.gutter.font")); + gutter.setGutterEnabled(GutterOptionPane.isGutterEnabled()); int width = jEdit.getIntegerProperty( "view.gutter.borderWidth",3); Modified: jEdit/trunk/org/gjt/sp/jedit/actions.xml =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/actions.xml 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/actions.xml 2009-04-21 02:18:31 UTC (rev 14964) @@ -1370,6 +1370,17 @@ </CODE> </ACTION> +<ACTION NAME="toggle-gutter"> + <CODE> + boolean showing = jEdit.getBooleanProperty("view.gutter.enabled"); + jEdit.setBooleanProperty("view.gutter.enabled", !showing); + jEdit.propertiesChanged(); + </CODE> + <IS_SELECTED> + return jEdit.getBooleanProperty("view.gutter.enabled"); + </IS_SELECTED> +</ACTION> + <ACTION NAME="toggle-line-numbers"> <CODE> textArea.getGutter().toggleExpanded(); Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-21 02:18:31 UTC (rev 14964) @@ -321,6 +321,9 @@ view.gutter.structClick=match-struct view.gutter.CstructClick=select-struct view.gutter.AstructClick=narrow-struct + +# Show gutter? +view.gutter.enabled=true #}}} # Expand abbrevs when space bar pressed Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-04-21 02:18:31 UTC (rev 14964) @@ -524,6 +524,7 @@ - \ toggle-line-numbers \ toggle-statusbar \ + toggle-gutter \ - \ %scrolling \ %splitting \ @@ -543,6 +544,7 @@ show-buffer-switcher.label=Show $Buffer Switcher toggle-line-numbers.label=$Line Numbers toggle-statusbar.label=$Toggle Status Bar +toggle-gutter.label=$Toggle Gutter show-context-menu.label=Show Context Menu toggle-full-screen.label=Toggle full-screen mode @@ -1883,6 +1885,7 @@ #{{{ Gutter pane options.gutter.label=Gutter options.gutter.code=new GutterOptionPane(); +options.gutter.enabled=Show gutter options.gutter.lineNumbers=Line numbering options.gutter.font=Gutter font: options.gutter.foreground=Line number color: Modified: jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java 2009-04-21 02:18:31 UTC (rev 14964) @@ -43,6 +43,12 @@ //{{{ _init() method public void _init() { + /* Gutter enable */ + gutterEnabled = new JCheckBox(jEdit.getProperty( + "options.gutter.enabled")); + gutterEnabled.setSelected(isGutterEnabled()); + addComponent(gutterEnabled); + /* Line numbering */ lineNumbersEnabled = new JCheckBox(jEdit.getProperty( "options.gutter.lineNumbers")); @@ -158,7 +164,6 @@ GridBagConstraints.VERTICAL); addFoldStyleChooser(); - } //}}} //{{{ _save() method @@ -215,6 +220,8 @@ gutterFocusBorder.getSelectedColor()); jEdit.setColorProperty("view.gutter.noFocusBorderColor", gutterNoFocusBorder.getSelectedColor()); + jEdit.setBooleanProperty(GUTTER_ENABLED_PROPERTY, + gutterEnabled.isSelected()); } //}}} //{{{ addFoldStyleChooser() method @@ -236,7 +243,15 @@ addComponent(new JLabel(jEdit.getProperty("options.gutter.foldStyle.label")), foldPainter); } //}}} + //{{{ isGutterEnabled() method + public static boolean isGutterEnabled() + { + return jEdit.getBooleanProperty(GUTTER_ENABLED_PROPERTY); + } //}}} + //{{{ Private members + private static final String GUTTER_ENABLED_PROPERTY = + "view.gutter.enabled"; private FontSelector gutterFont; private ColorWellButton gutterForeground; private ColorWellButton gutterBackground; @@ -254,5 +269,6 @@ private ColorWellButton gutterFocusBorder; private ColorWellButton gutterNoFocusBorder; private String [] painters; + private JCheckBox gutterEnabled; //}}} } Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java 2009-04-21 00:47:29 UTC (rev 14963) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java 2009-04-21 02:18:31 UTC (rev 14964) @@ -98,6 +98,7 @@ public Gutter(TextArea textArea) { this.textArea = textArea; + enabled = true; setAutoscrolls(true); setOpaque(true); @@ -275,11 +276,13 @@ else { Insets insets = border.getBorderInsets(this); - collapsedSize.width = FOLD_MARKER_SIZE + insets.right; + collapsedSize.width = FOLD_MARKER_SIZE + SELECTION_GUTTER_WIDTH + + insets.right; collapsedSize.height = gutterSize.height = insets.top + insets.bottom; + lineNumberWidth = fm.stringWidth("12345"); gutterSize.width = FOLD_MARKER_SIZE + insets.right - + fm.stringWidth("12345"); + + lineNumberWidth; } revalidate(); @@ -300,13 +303,22 @@ Border border = getBorder(); if(border != null) { + lineNumberWidth = fm.stringWidth("12345"); gutterSize.width = FOLD_MARKER_SIZE + border.getBorderInsets(this).right - + fm.stringWidth("12345"); + + lineNumberWidth; revalidate(); } } //}}} + //{{{ setGutterEnabled() method + /* Enables showing or hiding the gutter. */ + public void setGutterEnabled(boolean enabled) + { + this.enabled = enabled; + revalidate(); + } //}}} + //{{{ Getters and setters //{{{ getHighlightedForeground() method @@ -356,6 +368,8 @@ */ public Dimension getPreferredSize() { + if (! enabled) + return disabledSize; if (expanded) return gutterSize; else @@ -512,6 +526,11 @@ repaint(); } //}}} + public void setSelectionPopupHandler(GutterPopupHandler handler) + { + mouseHandler.selectionPopupHandler = handler; + } + public void setMouseActionsProvider(MouseActionsProvider mouseActionsProvider) { mouseHandler.mouseActions = mouseActionsProvider; @@ -522,13 +541,18 @@ //{{{ Instance variables private static final int FOLD_MARKER_SIZE = 12; + private static final int SELECTION_GUTTER_WIDTH = 12; + // The selection gutter exists only if the gutter is not expanded + private boolean enabled; private final TextArea textArea; private MouseHandler mouseHandler; private ExtensionManager extensionMgr; private Dimension gutterSize = new Dimension(0,0); private Dimension collapsedSize = new Dimension(0,0); + private int lineNumberWidth; + private Dimension disabledSize = new Dimension(0,0); private Color intervalHighlight; private Color currentLineHighlight; @@ -690,12 +714,10 @@ switch (alignment) { case RIGHT: - offset = gutterSize.width - collapsedSize.width - - (fm.stringWidth(number) + 1); + offset = lineNumberWidth - (fm.stringWidth(number) + 1); break; case CENTER: - offset = ((gutterSize.width - collapsedSize.width) - - fm.stringWidth(number)) / 2; + offset = (lineNumberWidth - fm.stringWidth(number)) / 2; break; case LEFT: default: offset = 0; @@ -724,6 +746,8 @@ MouseActionsProvider mouseActions; boolean drag; int toolTipInitialDelay, toolTipReshowDelay; + boolean selectLines; + GutterPopupHandler selectionPopupHandler; //{{{ mouseEntered() method public void mouseEntered(MouseEvent e) @@ -748,9 +772,25 @@ { textArea.requestFocus(); - if(TextAreaMouseHandler.isPopupTrigger(e) - || e.getX() >= getWidth() - borderWidth * 2) + boolean outsideGutter = + (e.getX() >= getWidth() - borderWidth * 2); + if(TextAreaMouseHandler.isPopupTrigger(e) || outsideGutter) { + if ((selectionPopupHandler != null) && + (! outsideGutter) && + (e.getX() > FOLD_MARKER_SIZE)) + { + int screenLine = e.getY() / textArea.getPainter() + .getFontMetrics().getHeight(); + int line = textArea.chunkCache.getLineInfo(screenLine) + .physicalLine; + if (line >= 0) + { + selectionPopupHandler.handlePopup( + e.getX(), e.getY(), line); + return; + } + } e.translatePoint(-getWidth(),0); textArea.mouseHandler.mousePressed(e); drag = true; @@ -768,6 +808,19 @@ if(line == -1) return; + if (e.getX() >= FOLD_MARKER_SIZE) + { + Selection s = new Selection.Range( + textArea.getLineStartOffset(line), + getFoldEndOffset(line)); + if(textArea.isMultipleSelectionEnabled()) + textArea.addToSelection(s); + else + textArea.setSelection(s); + selectLines = true; + return; + } + //{{{ Determine action String defaultAction; String variant; @@ -870,8 +923,50 @@ e.translatePoint(-getWidth(),0); textArea.mouseHandler.mouseDragged(e); } + else if(selectLines) + { + int screenLine = e.getY() / textArea.getPainter() + .getFontMetrics().getHeight(); + int line = textArea.chunkCache.getLineInfo(screenLine) + .physicalLine; + if(line == -1) + return; + int numSelections = textArea.getSelectionCount(); + Selection sel = textArea.getSelection(numSelections - 1); + int selStart = sel.getStart(); + int selStartLine = textArea.getLineOfOffset(selStart); + int selEnd; + if (selStartLine < line) + { + selEnd = getFoldEndOffset(line); + } + else + { + selStart = textArea.getLineStartOffset(line); + selEnd = sel.getEnd(); + } + textArea.resizeSelection(selStart, selEnd, 0, false); + } } //}}} + //{{{ getFoldEndOffset() method + private int getFoldEndOffset(int line) + { + JEditBuffer buffer = textArea.getBuffer(); + int endLine; + if ((line == buffer.getLineCount() - 1) || + (textArea.displayManager.isLineVisible(line + 1))) + { + endLine = line; + } + else + { + int[] lines = buffer.getFoldAtLine(line); + endLine = lines[1]; + } + return buffer.getLineEndOffset(endLine); + } //}}} + //{{{ mouseReleased() method public void mouseReleased(MouseEvent e) { @@ -882,6 +977,7 @@ } drag = false; + selectLines = false; } //}}} } //}}} } Added: jEdit/trunk/org/gjt/sp/jedit/textarea/GutterPopupHandler.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/GutterPopupHandler.java (rev 0) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/GutterPopupHandler.java 2009-04-21 02:18:31 UTC (rev 14964) @@ -0,0 +1,26 @@ +/* + * GutterPopupHandler.java - Handles popup trigger in the gutter + * :tabSize=8:indentSize=8:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 2009 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +package org.gjt.sp.jedit.textarea; + +public interface GutterPopupHandler { + void handlePopup(int x, int y, int line); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sh...@us...> - 2009-04-21 19:22:33
|
Revision: 14973 http://jedit.svn.sourceforge.net/jedit/?rev=14973&view=rev Author: shlomy Date: 2009-04-21 19:22:24 +0000 (Tue, 21 Apr 2009) Log Message: ----------- Added an option to specify the minimal number of digits to reserve for line numbers in the Gutter. The line number width is now updated when switching buffers. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java jEdit/trunk/org/gjt/sp/jedit/jedit.props jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2009-04-21 19:22:24 UTC (rev 14973) @@ -905,6 +905,8 @@ markerHighlight = new MarkerHighlight(); textArea.getGutter().setGutterEnabled( GutterOptionPane.isGutterEnabled()); + textArea.getGutter().setMinLineNumberDigitCount( + GutterOptionPane.getMinLineNumberDigits()); textArea.getGutter().addExtension(markerHighlight); textArea.getGutter().setSelectionPopupHandler( new GutterPopupHandler() Modified: jEdit/trunk/org/gjt/sp/jedit/jedit.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/jedit.props 2009-04-21 19:22:24 UTC (rev 14973) @@ -324,6 +324,9 @@ # Show gutter? view.gutter.enabled=true + +# Gutter minimal number of digits to reserve for line numbers +view.gutter.minDigitCount=2 #}}} # Expand abbrevs when space bar pressed Modified: jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/jedit_gui.props 2009-04-21 19:22:24 UTC (rev 14973) @@ -1887,6 +1887,7 @@ options.gutter.code=new GutterOptionPane(); options.gutter.enabled=Show gutter options.gutter.lineNumbers=Line numbering +options.gutter.minLineNumberDigits=Minimal number of digits to reserve for line numbers: options.gutter.font=Gutter font: options.gutter.foreground=Line number color: options.gutter.background=Background color: Modified: jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/options/GutterOptionPane.java 2009-04-21 19:22:24 UTC (rev 14973) @@ -56,6 +56,24 @@ "view.gutter.lineNumbers")); addComponent(lineNumbersEnabled); + minLineNumberDigits = new JTextField(String.valueOf( + getMinLineNumberDigits()),1); + minLineNumberDigits.setInputVerifier(new InputVerifier() { + @Override + public boolean verify(JComponent input) { + String s = minLineNumberDigits.getText(); + int i; + try { + i = Integer.valueOf(s).intValue(); + } catch (Exception e) { + return false; + } + return (i >= 0); + } + }); + addComponent(jEdit.getProperty("options.gutter.minLineNumberDigits"), + minLineNumberDigits, GridBagConstraints.VERTICAL); + /* Text font */ gutterFont = new FontSelector( jEdit.getFontProperty("view.gutter.font", @@ -171,6 +189,8 @@ { jEdit.setBooleanProperty("view.gutter.lineNumbers", lineNumbersEnabled .isSelected()); + jEdit.setIntegerProperty("view.gutter.minDigitCount", + Integer.valueOf(minLineNumberDigits.getText())); jEdit.setFontProperty("view.gutter.font",gutterFont.getFont()); jEdit.setColorProperty("view.gutter.fgColor",gutterForeground @@ -248,7 +268,16 @@ { return jEdit.getBooleanProperty(GUTTER_ENABLED_PROPERTY); } //}}} - + + //{{{ getMinLineNumberDigits() method + public static int getMinLineNumberDigits() + { + int n = jEdit.getIntegerProperty("view.gutter.minDigitCount", 2); + if (n < 0) + n = 2; + return n; + } + //{{{ Private members private static final String GUTTER_ENABLED_PROPERTY = "view.gutter.enabled"; @@ -270,5 +299,6 @@ private ColorWellButton gutterNoFocusBorder; private String [] painters; private JCheckBox gutterEnabled; + private JTextField minLineNumberDigits; //}}} } Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/Gutter.java 2009-04-21 19:22:24 UTC (rev 14973) @@ -113,19 +113,16 @@ addMouseMotionListener(mouseHandler); bufferListener = new BufferAdapter() { - private void update() { - setFont(getFont()); - } public void bufferLoaded(JEditBuffer buffer) { - update(); + updateLineNumberWidth(); } public void contentInserted(JEditBuffer buffer, int startLine, int offset, int numLines, int length) { - update(); + updateLineNumberWidth(); } public void contentRemoved(JEditBuffer buffer, int startLine, int offset, int numLines, int length) { - update(); + updateLineNumberWidth(); } }; @@ -299,7 +296,7 @@ + insets.right; collapsedSize.height = gutterSize.height = insets.top + insets.bottom; - lineNumberWidth = fm.stringWidth(String.valueOf(getLineCount())); + lineNumberWidth = fm.charWidth('5') * getLineNumberDigitCount(); gutterSize.width = FOLD_MARKER_SIZE + insets.right + lineNumberWidth; } @@ -307,24 +304,53 @@ revalidate(); } //}}} - //{{{ getLineCount() method - private int getLineCount() + //{{{ setMinLineNumberDigitCount() method + public void setMinLineNumberDigitCount(int min) { + if (min == minLineNumberDigits) + return; + minLineNumberDigits = min; + if (textArea.getBuffer() != null) + updateLineNumberWidth(); + } //}}} + + //{{{ getMinLineNumberDigitCount() method + private int getMinLineNumberDigitCount() + { + return minLineNumberDigits; + } //}}} + + //{{{ getLineNumberDigitCount() method + private int getLineNumberDigitCount() + { JEditBuffer buf = textArea.getBuffer(); - if (buf != buffer) - { - if (buffer != null) - buffer.removeBufferListener(bufferListener); - buffer = buf; - if (buffer != null) - buffer.addBufferListener(bufferListener); - } - if (buffer == null) - return 99; - int count = buffer.getLineCount(); - return (count < 99) ? 99 : count; + int minDigits = getMinLineNumberDigitCount(); + if (buf == null) + return minDigits; + int count = buf.getLineCount(); + int digits; + for (digits = 0; count > 0; digits++) + count /= 10; + return (digits < minDigits) ? minDigits : digits; } //}}} + //{{{ setBuffer() method + void setBuffer(JEditBuffer newBuffer) + { + if (buffer != null) + buffer.removeBufferListener(bufferListener); + buffer = newBuffer; + if (buffer != null) + buffer.addBufferListener(bufferListener); + updateLineNumberWidth(); + } + + //{{{ updateLineNumberWidth() method + private void updateLineNumberWidth() + { + setFont(getFont()); + } //}}} + //{{{ dispose() method void dispose() { @@ -350,7 +376,7 @@ Border border = getBorder(); if(border != null) { - lineNumberWidth = fm.stringWidth(String.valueOf(getLineCount())); + lineNumberWidth = fm.charWidth('5') * getLineNumberDigitCount(); gutterSize.width = FOLD_MARKER_SIZE + border.getBorderInsets(this).right + lineNumberWidth; @@ -622,6 +648,7 @@ private FoldPainter foldPainter; private JEditBuffer buffer; private BufferListener bufferListener; + private int minLineNumberDigits; //}}} //{{{ paintLine() method Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-04-21 16:42:00 UTC (rev 14972) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2009-04-21 19:22:24 UTC (rev 14973) @@ -396,6 +396,7 @@ this.buffer.beginCompoundEdit(); chunkCache.setBuffer(buffer); + gutter.setBuffer(buffer); propertiesChanged(); if(displayManager != null) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |