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

📄 viewpane.java

📁 定要上载质量高而定要上载质量高而定要上载质量高而定要上载质量高而定要上载质量高而
💻 JAVA
字号:
/*
 * Created on Apr 18, 2005
 */
package org.flexdock.dockbar;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;

import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.event.MouseInputAdapter;

import org.flexdock.dockbar.event.ResizeListener;
import org.flexdock.docking.Dockable;
import org.flexdock.docking.state.MinimizationManager;
import org.flexdock.plaf.common.border.SlideoutBorder;

/**
 * @author Christopher Butler
 */
public class ViewPane extends JPanel {
	private static final Dimension RESIZE_DIMS = new Dimension(3, 3);
	private static final MouseInputAdapter EMPTY_MOUSE_LISTENER = new MouseInputAdapter() {};
	public static final int UNSPECIFIED_PREFERRED_SIZE = -1;
	private DockbarManager manager;
	private JPanel dragEdge;
	private int prefSize;
	private boolean locked;

	
	public ViewPane(DockbarManager mgr) {
		super(new BorderLayout(0, 0));
		setBorder(new SlideoutBorder());
		
		manager = mgr;
		prefSize = UNSPECIFIED_PREFERRED_SIZE;
		
		dragEdge = new JPanel();
		dragEdge.setPreferredSize(RESIZE_DIMS);
		
		ResizeListener listener = new ResizeListener(mgr);
		dragEdge.addMouseListener(listener);
		dragEdge.addMouseMotionListener(listener);
		
		updateOrientation();
		
		// intercept rouge mouse events so they don't fall 
		// through to the content pane
		addMouseListener(EMPTY_MOUSE_LISTENER);
		addMouseMotionListener(EMPTY_MOUSE_LISTENER);
	}


	
	public void updateContents() {
		// remove the currently docked component
		Component[] children = getComponents();
		for(int i=0; i<children.length; i++) {
			if(children[i]!=dragEdge)
				remove(children[i]);
		}

		// add the new component
		Dockable d = manager.getActiveDockable();
		Component c = d==null? null: d.getComponent();
		if(c!=null)
			add(c, BorderLayout.CENTER);
	}

	
	public void updateOrientation() {
		Border border = getBorder();
		if(border instanceof SlideoutBorder)
			((SlideoutBorder)border).setOrientation(manager.getActiveEdge());
		
		// update the drag edge
		remove(dragEdge);
		add(dragEdge, getEdgeRegion());
		dragEdge.setCursor(getResizeCursor());

		// revalidate
		revalidate();
	}
	
	private String getEdgeRegion() {
		int orientation = manager.getActiveEdge();
		switch(orientation) {
			case MinimizationManager.TOP:
				return BorderLayout.SOUTH;
			case MinimizationManager.BOTTOM:
				return BorderLayout.NORTH;
			case MinimizationManager.RIGHT:
				return BorderLayout.WEST;
			default:
				return BorderLayout.EAST;
		}
	}
	
	public Cursor getResizeCursor() {
		int orientation = manager.getActiveEdge();
		return orientation==MinimizationManager.LEFT || 
				orientation==MinimizationManager.RIGHT? 
				Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR): 
				Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR);
	}
	
	public int getPrefSize() {
		return prefSize;
	}
	public void setPrefSize(int prefSize) {
		this.prefSize = prefSize;
	}
	public boolean isLocked() {
		return locked;
	}
	public void setLocked(boolean locked) {
		this.locked = locked;
	}
}

⌨️ 快捷键说明

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