⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dockablewindowmanager.java

📁 开源的java 编辑器源代码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		{			Entry entry = (Entry)iter.next();			if(entry.win != null)			{				entry.container.unregister(entry);			}		}		iter = clones.iterator();		while(iter.hasNext())		{			Entry entry = (Entry)iter.next();			if(entry.win != null)			{				entry.container.unregister(entry);			}		}	} //}}}	//{{{ getTopDockingArea() method	public PanelWindowContainer getTopDockingArea()	{		return top;	} //}}}	//{{{ getLeftDockingArea() method	public PanelWindowContainer getLeftDockingArea()	{		return left;	} //}}}	//{{{ getBottomDockingArea() method	public PanelWindowContainer getBottomDockingArea()	{		return bottom;	} //}}}	//{{{ getRightDockingArea() method	public PanelWindowContainer getRightDockingArea()	{		return right;	} //}}}	//{{{ createPopupMenu() method	public JPopupMenu createPopupMenu(		final DockableWindowContainer container,		final String dockable,		final boolean clone)	{		JPopupMenu popup = new JPopupMenu();		if(dockable == null && container instanceof PanelWindowContainer)		{			ActionListener listener = new ActionListener()			{				public void actionPerformed(ActionEvent evt)				{					showDockableWindow(evt.getActionCommand());				}			};			String[] dockables = ((PanelWindowContainer)				container).getDockables();			for(int i = 0; i < dockables.length; i++)			{				String name = dockables[i];				JMenuItem item = new JMenuItem(getDockableTitle(name));				item.setActionCommand(name);				item.addActionListener(listener);				popup.add(item);			}		}		else		{			JMenuItem caption = new JMenuItem(getDockableTitle(dockable));			caption.setEnabled(false);			popup.add(caption);			popup.addSeparator();			String currentPos = jEdit.getProperty(dockable + ".dock-position",FLOATING);			if(!clone)			{				String[] positions = { FLOATING, TOP, LEFT, BOTTOM, RIGHT };				for(int i = 0; i < positions.length; i++)				{					final String pos = positions[i];					if(pos.equals(currentPos))						continue;					JMenuItem moveMenuItem = new JMenuItem(jEdit.getProperty("view.docking.menu-"						+ pos));					moveMenuItem.addActionListener(new ActionListener()					{						public void actionPerformed(ActionEvent evt)						{							jEdit.setProperty(dockable + ".dock-position",pos);							EditBus.send(new DockableWindowUpdate(								DockableWindowManager.this,								DockableWindowUpdate.PROPERTIES_CHANGED,								null							));							showDockableWindow(dockable);						}					});					popup.add(moveMenuItem);				}				popup.addSeparator();			}			JMenuItem cloneMenuItem = new JMenuItem(jEdit.getProperty("view.docking.menu-clone"));			cloneMenuItem.addActionListener(new ActionListener()			{				public void actionPerformed(ActionEvent evt)				{					floatDockableWindow(dockable);				}			});			popup.add(cloneMenuItem);			popup.addSeparator();			JMenuItem closeMenuItem = new JMenuItem(jEdit.getProperty("view.docking.menu-close"));			closeMenuItem.addActionListener(new ActionListener()			{				public void actionPerformed(ActionEvent evt)				{					if(clone)						((FloatingWindowContainer)container).dispose();					else						removeDockableWindow(dockable);				}			});			popup.add(closeMenuItem);			if(!(clone || currentPos.equals(FLOATING)))			{				JMenuItem undockMenuItem = new JMenuItem(jEdit.getProperty("view.docking.menu-undock"));				undockMenuItem.addActionListener(new ActionListener()				{					public void actionPerformed(ActionEvent evt)					{						jEdit.setProperty(dockable + ".dock-position",FLOATING);						EditBus.send(new DockableWindowUpdate(							DockableWindowManager.this,							DockableWindowUpdate.PROPERTIES_CHANGED,							null						));					}				});				popup.add(undockMenuItem);			}		}		return popup;	} //}}}	//{{{ paintChildren() method	public void paintChildren(Graphics g)	{		super.paintChildren(g);		if(resizeRect != null)		{			g.setColor(Color.darkGray);			g.fillRect(resizeRect.x,resizeRect.y,				resizeRect.width,resizeRect.height);		}	} //}}}	//{{{ handleMessage() method	public void handleMessage(EBMessage msg)	{		if(msg instanceof DockableWindowUpdate)		{			if(((DockableWindowUpdate)msg).getWhat()				== DockableWindowUpdate.PROPERTIES_CHANGED)				propertiesChanged();		}		else if(msg instanceof PropertiesChanged)			propertiesChanged();		else if(msg instanceof PluginUpdate)		{			PluginUpdate pmsg = (PluginUpdate)msg;			if(pmsg.getWhat() == PluginUpdate.LOADED)			{				Iterator iter = dockableWindowFactories					.values().iterator();				while(iter.hasNext())				{					Factory factory = (Factory)iter.next();					if(factory.plugin == pmsg.getPluginJAR())						addEntry(factory);				}				propertiesChanged();			}			else if(pmsg.isExiting())			{				// we don't care			}			else if(pmsg.getWhat() == PluginUpdate.DEACTIVATED)			{				Iterator iter = getAllPluginEntries(					pmsg.getPluginJAR(),false);				while(iter.hasNext())				{					Entry entry = (Entry)iter.next();					entry.container.remove(entry);				}			}			else if(pmsg.getWhat() == PluginUpdate.UNLOADED)			{				Iterator iter = getAllPluginEntries(					pmsg.getPluginJAR(),true);				while(iter.hasNext())				{					Entry entry = (Entry)iter.next();					entry.container.unregister(entry);					entry.win = null;					entry.container = null;				}			}		}	} //}}}	//{{{ Package-private members	int resizePos;	Rectangle resizeRect;	//{{{ setResizePos() method	void setResizePos(int resizePos, PanelWindowContainer resizing)	{		this.resizePos = resizePos;		if(resizePos < 0)			resizePos = 0;		Rectangle newResizeRect = new Rectangle(0,0,			PanelWindowContainer.SPLITTER_WIDTH - 2,			PanelWindowContainer.SPLITTER_WIDTH - 2);		if(resizing == top)		{			resizePos = Math.min(resizePos,getHeight()				- top.buttonPanel.getHeight()				- bottom.dockablePanel.getHeight()				- bottom.buttonPanel.getHeight()				- PanelWindowContainer.SPLITTER_WIDTH);			newResizeRect.x = top.dockablePanel.getX() + 1;			newResizeRect.y = resizePos + top.buttonPanel.getHeight() + 1;			newResizeRect.width = top.dockablePanel.getWidth() - 2;		}		else if(resizing == left)		{			resizePos = Math.min(resizePos,getWidth()				- left.buttonPanel.getWidth()				- right.dockablePanel.getWidth()				- right.buttonPanel.getWidth()				- PanelWindowContainer.SPLITTER_WIDTH);			newResizeRect.x = resizePos + left.buttonPanel.getWidth() + 1;			newResizeRect.y = left.dockablePanel.getY() + 1;			newResizeRect.height = left.dockablePanel.getHeight() - 2;		}		else if(resizing == bottom)		{			resizePos = Math.min(resizePos,getHeight()				- bottom.buttonPanel.getHeight()				- top.dockablePanel.getHeight()				- top.buttonPanel.getHeight()				- PanelWindowContainer.SPLITTER_WIDTH);			newResizeRect.x = bottom.dockablePanel.getX() + 1;			newResizeRect.y = getHeight() - bottom.buttonPanel.getHeight() - resizePos				- PanelWindowContainer.SPLITTER_WIDTH + 2;			newResizeRect.width = bottom.dockablePanel.getWidth() - 2;		}		else if(resizing == right)		{			resizePos = Math.min(resizePos,getWidth()				- right.buttonPanel.getWidth()				- left.dockablePanel.getWidth()				- left.buttonPanel.getWidth()				- PanelWindowContainer.SPLITTER_WIDTH);			newResizeRect.x = getWidth() - right.buttonPanel.getWidth() - resizePos				- PanelWindowContainer.SPLITTER_WIDTH + 1;			newResizeRect.y = right.dockablePanel.getY() + 1;			newResizeRect.height = right.dockablePanel.getHeight() - 2;		}		Rectangle toRepaint;		if(resizeRect == null)			toRepaint = newResizeRect;		else			toRepaint = resizeRect.union(newResizeRect);		resizeRect = newResizeRect;		repaint(toRepaint);	} //}}}	//{{{ finishResizing() method	void finishResizing()	{		resizeRect = null;		repaint();	} //}}}	//}}}	//{{{ Private members	private View view;	private Hashtable windows;	private boolean alternateLayout;	private PanelWindowContainer left;	private PanelWindowContainer right;	private PanelWindowContainer top;	private PanelWindowContainer bottom;	private ArrayList clones;	//{{{ propertiesChanged() method	private void propertiesChanged()	{		if(view.isPlainView())			return;		alternateLayout = jEdit.getBooleanProperty("view.docking.alternateLayout");		String[] windowList = getRegisteredDockableWindows();		for(int i = 0; i < windowList.length; i++)		{			String dockable = windowList[i];			Entry entry = (Entry)windows.get(dockable);			String newPosition = jEdit.getProperty(dockable				+ ".dock-position",FLOATING);			if(newPosition.equals(entry.position))			{				continue;			}			entry.position = newPosition;			if(entry.container != null)			{				entry.container.unregister(entry);				entry.container = null;				entry.win = null;			}			if(newPosition.equals(FLOATING))				/* do nothing */;			else			{				if(newPosition.equals(TOP))					entry.container = top;				else if(newPosition.equals(LEFT))					entry.container = left;				else if(newPosition.equals(BOTTOM))					entry.container = bottom;				else if(newPosition.equals(RIGHT))					entry.container = right;				else				{					Log.log(Log.WARNING,this,						"Unknown position: "						+ newPosition);					continue;				}				entry.container.register(entry);			}		}		top.sortDockables();		left.sortDockables();		bottom.sortDockables();		right.sortDockables();		revalidate();		repaint();	} //}}}	//{{{ addEntry() method	private void addEntry(Factory factory)	{		Entry e;		if(view.isPlainView())		{			// don't show menu items to dock into a plain view			e = new Entry(factory,FLOATING);		}		else		{			e = new Entry(factory);			if(e.position.equals(FLOATING))				/* nothing to do */;			else if(e.position.equals(TOP))				e.container = top;			else if(e.position.equals(LEFT))				e.container = left;			else if(e.position.equals(BOTTOM))				e.container = bottom;			else if(e.position.equals(RIGHT))				e.container = right;			else			{				Log.log(Log.WARNING,this,					"Unknown position: "					+ e.position);			}			if(e.container != null)				e.container.register(e);		}		windows.put(factory.name,e);	} //}}}	//{{{ getAllPluginEntries() method	/**	 * If remove is false, only remove from clones list, otherwise remove	 * from both entries and clones.	 */	private Iterator getAllPluginEntries(PluginJAR plugin, boolean remove)	{		java.util.List returnValue = new LinkedList();		Iterator iter = windows.values().iterator();		while(iter.hasNext())		{			Entry entry = (Entry)iter.next();			if(entry.factory.plugin == plugin)			{				returnValue.add(entry);				if(remove)					iter.remove();			}		}		iter = clones.iterator();		while(iter.hasNext())		{			Entry entry = (Entry)iter.next();			if(entry.factory.plugin == plugin)			{				returnValue.add(entry);				iter.remove();			}		}		return returnValue.iterator();	} //}}}	//}}}	//}}}	//{{{ DockableLayout class	public class DockableLayout implements LayoutManager2	{		// for backwards compatibility with plugins that fiddle with		// jEdit's UI layout		static final String CENTER = BorderLayout.CENTER;		public static final String TOP_TOOLBARS = "top-toolbars";		public static final String BOTTOM_TOOLBARS = "bottom-toolbars";		static final String TOP_BUTTONS = "top-buttons";		static final String LEFT_BUTTONS = "left-buttons";		static final String BOTTOM_BUTTONS = "bottom-buttons";		static final String RIGHT_BUTTONS = "right-buttons";		Component topToolbars, bottomToolbars;		Component center;		Component top, left, bottom, right;		Component topButtons, leftButtons, bottomButtons, rightButtons;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -