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

📄 docklayout.java

📁 A static analysis tool to find bugs in Java programs
💻 JAVA
字号:
/* * FindBugs - Find Bugs in Java programs * Copyright (C) 2006, University of Maryland *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library 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 * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package edu.umd.cs.findbugs.gui2;import java.awt.BorderLayout;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import javax.swing.JCheckBoxMenuItem;import javax.swing.JMenu;import net.infonode.docking.DockingWindow;import net.infonode.docking.DockingWindowAdapter;import net.infonode.docking.DockingWindowListener;import net.infonode.docking.RootWindow;import net.infonode.docking.SplitWindow;import net.infonode.docking.TabWindow;import net.infonode.docking.View;import net.infonode.docking.theme.DockingWindowsTheme;import net.infonode.docking.theme.ShapedGradientDockingTheme;import net.infonode.docking.title.DockingWindowTitleProvider;import net.infonode.docking.util.DockingUtil;import net.infonode.docking.util.ViewMap;/** * @author pugh */public class DockLayout implements FindBugsLayoutManager {	private static class DockParentListener extends DockingWindowAdapter	{		@Override		public void windowClosed(DockingWindow window)		{			// Notify all children's listeners			ArrayList<DockingWindow> children = new ArrayList<DockingWindow>();			for (int i = 0; i < window.getChildWindowCount(); i++)				children.add(window.getChildWindow(i));			for (DockingWindow i : children)				i.close();		}	}	private class ViewMenuItem extends JCheckBoxMenuItem implements ItemListener	{		private View view;		public ViewMenuItem(View view, String title)		{			super(title, true);			addItemListener(this);			this.view = view;//			view.addListener(new Listener());		}		// Menu item has been checked or unchecked		public void itemStateChanged(ItemEvent evt)		{			if (evt.getStateChange() == ItemEvent.SELECTED)				DockingUtil.addWindow(view, rootWindow);			if (evt.getStateChange() == ItemEvent.DESELECTED)				view.close();		}//		private class Listener extends DockingWindowAdapter//		{//			@Override//			public void windowAdded(DockingWindow addedToWindow, DockingWindow addedWindow)//			{//				if (addedWindow.equals(view))//					ViewMenuItem.this.setSelected(true);//			}//			//			@Override//			public void windowRemoved(DockingWindow removedFromWindow, DockingWindow removedWindow)//			{//				if (removedWindow.equals(view))//					ViewMenuItem.this.setSelected(false);//			}//		}	}	private View commentsView = null;	final MainFrame frame;	private RootWindow rootWindow;	private View sourceView = null;	private View summaryView = null;	private TabWindow tabs = null;	private View topView = null;	private Map<View, ViewMenuItem> viewMenuItems = null;	/**	 * @param frame	 */	public DockLayout(MainFrame frame) {		this.frame = frame;	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#createWindowMenu()	 */	public JMenu createWindowMenu() {		viewMenuItems = new HashMap<View, ViewMenuItem>();		viewMenuItems.put(summaryView, new ViewMenuItem(summaryView, "Bug summary"));		viewMenuItems.put(commentsView, new ViewMenuItem(commentsView, "Comments"));		viewMenuItems.put(sourceView, new ViewMenuItem(sourceView, "Source code"));		JMenu windowMenu = new JMenu("Window");		windowMenu.setMnemonic(KeyEvent.VK_W);		windowMenu.add(viewMenuItems.get(summaryView));		windowMenu.add(viewMenuItems.get(commentsView));		windowMenu.add(viewMenuItems.get(sourceView));		return windowMenu;	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#initialize()	 */	public void initialize() {		ViewMap viewMap = new ViewMap();		topView = new View(L10N.getLocalString("view.bugs", "Bugs"), null, frame.bugListPanel());		topView.getWindowProperties().setCloseEnabled(false);		viewMap.addView(0, topView);		summaryView = new View(L10N.getLocalString("view.bug_summary", "Bug Summary"), null, frame.summaryTab());		viewMap.addView(1, summaryView);		commentsView = new View(L10N.getLocalString("view.comments", "Comments"), null, frame.commentsPanel());		viewMap.addView(2, commentsView);		sourceView = new View(L10N.getLocalString("view.source", "Source"), null, frame.createSourceCodePanel());		viewMap.addView(3, sourceView);		rootWindow = DockingUtil.createRootWindow(viewMap, true);		tabs = new TabWindow(new DockingWindow[]{summaryView, commentsView, sourceView});		tabs.addListener(new DockParentListener());		tabs.setSelectedTab(0);//		tabs.getWindowProperties().setCloseEnabled(false);		rootWindow.setWindow(new SplitWindow(false, 0.4f, topView, tabs));		DockingWindowsTheme theme = new ShapedGradientDockingTheme();		rootWindow.getRootWindowProperties().addSuperObject(theme.getRootWindowProperties());		try		{			rootWindow.read(new ObjectInputStream(new ByteArrayInputStream(GUISaveState.getInstance().getDockingLayout())), true);		}		catch (IOException e) {}		DockingWindowListener listener = new DockingWindowAdapter()		{			@Override			public void windowAdded(DockingWindow addedToWindow, DockingWindow addedWindow)			{				viewMenuItems.get(addedWindow).setSelected(true);				addedToWindow.addListener(new DockParentListener());			}			@Override			public void windowClosed(DockingWindow window)			{				viewMenuItems.get(window).setSelected(false);			}		};		summaryView.addListener(listener);		commentsView.addListener(listener);		sourceView.addListener(listener);		frame.setLayout(new BorderLayout());		frame.add(rootWindow, BorderLayout.CENTER);		frame.add(frame.statusBar(), BorderLayout.SOUTH);	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#makeCommentsVisible()	 */	public void makeCommentsVisible() {		commentsView.makeVisible();	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#makeSourceVisible()	 */	public void makeSourceVisible() {		sourceView.makeVisible();	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#saveState()	 */	public void saveState() {		try		{			// FIXME this is writing the wrong array and I don't know why			ByteArrayOutputStream dockingLayout = new ByteArrayOutputStream();			ObjectOutputStream out = new ObjectOutputStream(dockingLayout);			rootWindow.write(out, true);			out.close();			GUISaveState.getInstance().setDockingLayout(dockingLayout.toByteArray());		}		catch (IOException e) {}	}	/* (non-Javadoc)	 * @see edu.umd.cs.findbugs.gui2.LayoutManager#setSourceTitle(java.lang.String)	 */	public void setSourceTitle(final String title) {	sourceView.getWindowProperties().setTitleProvider(new DockingWindowTitleProvider(){		public String getTitle(DockingWindow arg0) {			return title;		}					});	}}

⌨️ 快捷键说明

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