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

📄 dockbar.java

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

import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.border.Border;

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


/**
 * @author Christopher Butler
 */
public class Dockbar extends JPanel {
	protected int orientation;
    protected DockbarManager manager;
    protected ArrayList mDocks = new ArrayList();
	
	static {
		// make sure DockbarLabel is initialized
		Class c = DockbarLabel.class;
	}

	public static int getValidOrientation(int orient) {
		switch (orient) {
			case MinimizationManager.LEFT:
				return MinimizationManager.LEFT;
			case MinimizationManager.RIGHT:
				return MinimizationManager.RIGHT;
			case MinimizationManager.BOTTOM:
				return MinimizationManager.BOTTOM;
			default:
				return MinimizationManager.LEFT;
		}
	}

	public Dockbar(DockbarManager manager, int orientation) {
		this.manager = manager;
		setBorder(new SlideoutBorder());
		setOrientation(orientation);
	}

	void undock(Dockable dockable) {
		DockbarLabel label = getLabel(dockable);
		
		remove(label);
		mDocks.remove(label);
		getParent().validate();
		repaint();
	}

	public DockbarLabel getLabel(Dockable dockable) {
		if(dockable==null)
			return null;
		
		for (Iterator docks = mDocks.iterator(); docks.hasNext();) {
			DockbarLabel label = (DockbarLabel) docks.next();

			if (label.getDockable() == dockable)
				return label;
		} // for

		return null;
	}
	
	public boolean contains(Dockable dockable) {
		return getLabel(dockable)!=null;
	}

	public void dock(Dockable dockable) {
		if(dockable==null)
			return;
		
		DockbarLabel currentLabel = getLabel(dockable);
		if (currentLabel!=null) {
			currentLabel.setActive(false);
			return;
		}

		DockbarLabel newLabel = new DockbarLabel(dockable.getPersistentId(), getOrientation());
		add(newLabel);
		mDocks.add(newLabel);

		getParent().validate();
		repaint();
	}

	public int getOrientation() {
		return orientation;
	}

	private void setOrientation(int orientation) {
		orientation = getValidOrientation(orientation);
		this.orientation = orientation;
		
		Border border = getBorder();
		if(border instanceof SlideoutBorder)
			((SlideoutBorder)border).setOrientation(orientation);
		
		int boxConstraint = orientation==MinimizationManager.TOP || 
			orientation==MinimizationManager.BOTTOM? BoxLayout.LINE_AXIS: BoxLayout.PAGE_AXIS;
		setLayout(new BoxLayout(this, boxConstraint));
	}
	
	public Dimension getPreferredSize() {
		if(mDocks.size()==0)
			return new Dimension(0,0);
		
		DockbarLabel label = (DockbarLabel)getComponent(0);
		return label.getPreferredSize();
	}
	
	void activate(String dockableId, boolean lock) {
		if(manager!=null) {
			manager.setActiveDockable(dockableId);
			if(lock)
				manager.getActivationListener().lockViewpane();
		}
	}
}

⌨️ 快捷键说明

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