From: <kp...@us...> - 2008-05-31 10:10:45
|
Revision: 12741 http://jedit.svn.sourceforge.net/jedit/?rev=12741&view=rev Author: kpouer Date: 2008-05-31 03:10:41 -0700 (Sat, 31 May 2008) Log Message: ----------- added the bufferSet widget for the status bar Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/services.xml Added Paths: ----------- jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/BufferSetWidgetFactory.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2008-05-31 09:56:41 UTC (rev 12740) +++ jEdit/trunk/doc/CHANGES.txt 2008-05-31 10:10:41 UTC (rev 12741) @@ -26,7 +26,7 @@ but was also used for going back a space in the text field. Use "Alt+Left" to go up a directory. (#1694133 - Alan Ezust) -- New Action: Scroll-And-Center-Caret Action. +- New Action: Scroll-And-Center-Caret Action. Restored previous behavior of center-caret-on-screen. (# 1910061 - Alan Ezust) @@ -48,6 +48,7 @@ - New BufferSet api. The EditPanes can now manage their own list of buffers, or share this list with the editpanes from the same view, and of course as usual share the same list between all EditPanes (the default behavior) + A bufferSet widget is available for the status bar (Matthieu Casanova) }}} Copied: jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/BufferSetWidgetFactory.java (from rev 12727, jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/ModeWidgetFactory.java) =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/BufferSetWidgetFactory.java (rev 0) +++ jEdit/trunk/org/gjt/sp/jedit/gui/statusbar/BufferSetWidgetFactory.java 2008-05-31 10:10:41 UTC (rev 12741) @@ -0,0 +1,167 @@ +/* + * BufferSetWidgetFactory.java - The bufferSet widget service + * :tabSize=8:indentSize=8:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 2008 Matthieu Casanova + * Portions Copyright (C) 2001, 2004 Slava Pestov + * Portions copyright (C) 2001 Mike Dillon + * + * 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.gui.statusbar; + +//{{{ Imports +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JLabel; + +import org.gjt.sp.jedit.*; +import org.gjt.sp.jedit.msg.ViewUpdate; +import org.gjt.sp.jedit.msg.EditPaneUpdate; +import org.gjt.sp.jedit.bufferset.BufferSet; +import org.gjt.sp.jedit.bufferset.BufferSetManager; +//}}} + +/** + * A Statusbar widget that show the bufferSet's scope of the current edit pane. + * + * @author Matthieu Casanova + * @since jEdit 4.3pre15 + */ +public class BufferSetWidgetFactory implements StatusWidgetFactory +{ + //{{{ getWidget() method + public Widget getWidget(View view) + { + Widget bufferSetWidget = new BufferSetWidget(view); + return bufferSetWidget; + } //}}} + + //{{{ BufferSetWidget class + private static class BufferSetWidget implements Widget, EBComponent + { + private final JLabel bufferSetLabel; + private final View view; + private String currentScope; + + public BufferSetWidget(final View view) + { + bufferSetLabel = new ToolTipLabel() + { + @Override + public void addNotify() + { + super.addNotify(); + EditBus.addToBus(BufferSetWidget.this); + } + + @Override + public void removeNotify() + { + super.removeNotify(); + EditBus.removeFromBus(BufferSetWidget.this); + } + }; + this.view = view; + update(); + bufferSetLabel.addMouseListener(new MouseAdapter() + { + @Override + public void mouseClicked(MouseEvent evt) + { + if (evt.getClickCount() == 2) + { + EditPane editPane = view.getEditPane(); + BufferSet bufferSet = editPane.getBufferSet(); + String scope = bufferSet.getScope(); + BufferSetManager bufferSetManager = jEdit.getBufferSetManager(); + if ("view".equals(scope)) + { + editPane.setBufferSet(bufferSetManager.getEditPaneBufferSet(editPane, bufferSet)); + } + else if ("editpane".equals(scope)) + { + editPane.setBufferSet(bufferSetManager.getGlobalBufferSet()); + } + else + { + editPane.setBufferSet(bufferSetManager.getViewBufferSet(editPane.getView())); + } + } + } + }); + } + + //{{{ getComponent() method + public JComponent getComponent() + { + return bufferSetLabel; + } //}}} + + //{{{ update() method + public void update() + { + String scope = view.getEditPane().getBufferSet().getScope(); + if (currentScope == null || !currentScope.equals(scope)) + { + bufferSetLabel.setText(scope.substring(0,1).toUpperCase()); + bufferSetLabel.setToolTipText(jEdit.getProperty("view.status.bufferset-tooltip", new Object[] {scope})); + currentScope = scope; + } + } //}}} + + //{{{ propertiesChanged() method + public void propertiesChanged() + { + // retarded GTK look and feel! + Font font = new JLabel().getFont(); + //UIManager.getFont("Label.font"); + FontMetrics fm = bufferSetLabel.getFontMetrics(font); + Dimension dim = new Dimension(Math.max(fm.charWidth('E'),Math.max(fm.charWidth('V'), + fm.charWidth('G'))), + fm.getHeight()); + bufferSetLabel.setPreferredSize(dim); + bufferSetLabel.setMaximumSize(dim); + } //}}} + + //{{{ handleMessage() method + public void handleMessage(EBMessage message) + { + if (message instanceof ViewUpdate) + { + ViewUpdate viewUpdate = (ViewUpdate) message; + if (viewUpdate.getWhat() == ViewUpdate.EDIT_PANE_CHANGED) + { + update(); + } + } + else if (message instanceof EditPaneUpdate) + { + EditPaneUpdate editPaneUpdate = (EditPaneUpdate) message; + if (editPaneUpdate.getEditPane() == view.getEditPane() && + editPaneUpdate.getWhat() == EditPaneUpdate.BUFFERSET_CHANGED) + { + update(); + } + } + } //}}} + + } //}}} + +} \ No newline at end of file Modified: jEdit/trunk/org/gjt/sp/jedit/services.xml =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/services.xml 2008-05-31 09:56:41 UTC (rev 12740) +++ jEdit/trunk/org/gjt/sp/jedit/services.xml 2008-05-31 10:10:41 UTC (rev 12741) @@ -95,5 +95,9 @@ <SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidget" NAME="errors"> new org.gjt.sp.jedit.gui.statusbar.ErrorsWidgetFactory(); </SERVICE> + + <SERVICE CLASS="org.gjt.sp.jedit.gui.statusbar.StatusWidget" NAME="buffersets"> + new org.gjt.sp.jedit.gui.statusbar.BufferSetWidgetFactory(); + </SERVICE> <!--jEdit.setProperty("view.status"," mode , fold , encoding ) wrap multiSelect rectSelect overwrite lineSep memory-status clock")--> </SERVICES> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |