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

📄 layoutsequence.java

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

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import org.flexdock.docking.Dockable;
import org.flexdock.docking.DockingConstants;
import org.flexdock.docking.DockingManager;
import org.flexdock.docking.DockingPort;
import org.flexdock.docking.state.DockingState;
import org.flexdock.util.DockingUtility;

/**
 * @author Christopher Butler
 */
public class LayoutSequence implements Cloneable, Serializable, DockingConstants {

    private List sequence;  // contains DockingState objects
	
	public LayoutSequence() {
		this(new ArrayList());
	}
	
	public LayoutSequence(DockingState[] dockingStates) {
		this(dockingStates == null
                ? new ArrayList()
                : Arrays.asList(dockingStates));
	}
	
	private LayoutSequence(List list) {
		sequence = list;
	}
	
	public void add(Dockable dockable) {
		add(dockable, null);
	}
	
	public void add(String dockable) {
		add(dockable, null);
	}
	
	public void add(Dockable dockable, Dockable relativeParent) {
		add(dockable, relativeParent, CENTER_REGION, -1.0f);
	}
	
	public void add(String dockable, String relativeParent) {
		add(dockable, relativeParent, CENTER_REGION, -1.0f);
	}
	
	public void add(Dockable dockable, Dockable relativeParent, String region, float ratio) {
		String dockableId = dockable==null? null: dockable.getPersistentId();
		String parentId = relativeParent==null? null: relativeParent.getPersistentId();
		add(dockableId, parentId, region, ratio);
	}
	
	public void add(String dockableId, String relativeParentId, String region, float ratio) {	
		if(dockableId==null)
			return;
		
		if(relativeParentId==null && sequence.size() > 0)
			throw new IllegalStateException("All calls to add() after the first dockable has been added MUST specify a relative dockable parent.");

		DockingState info = new DockingState(dockableId);
		info.setRelativeParentId(relativeParentId);
		info.setRegion(region);
		info.setSplitRatio(ratio);
		sequence.add(info);
	}

	//Claudio Romano request
	public void add(DockingState dockingState) {
	    if (dockingState == null) {
	        return;
	    }
		sequence.add(dockingState);
	}
	
	public void apply(DockingPort port) {
		if(port==null)
			return;
		
		boolean listen = PerspectiveManager.isDockingStateListening(); 
		PerspectiveManager.setDockingStateListening(false);
		
		PerspectiveManager.clear(port);
		int len = sequence.size();
		Dockable[] dockables = new Dockable[len]; 
		for(int i=0; i<len; i++) {
			DockingState info = (DockingState)sequence.get(i);
			Dockable dockable = info.getDockable();
			dockables[i] = dockable;
			String region = info.getRegion();
			if(i==0) {
				DockingManager.dock(info.getDockable(), port, info.getRegion());
				continue;
			}
			
			Dockable parent = info.getRelativeParent();
			float ratio = info.getSplitRatio();
			DockingUtility.dockRelative(dockable, parent, region, ratio);
		}
		
		PerspectiveManager.setDockingStateListening(listen);
		PerspectiveManager.updateDockingStates(dockables);
	}
	
    public List getDockingStates() {
        return getSequenceClone();
    }
	
	private ArrayList getSequenceClone() {
		ArrayList list = new ArrayList(sequence.size());
		for(Iterator it=sequence.iterator(); it.hasNext();) {
			DockingState info = (DockingState)it.next();
			list.add(info.clone());
		}
		return list;
	}
	
	public Object clone() {
        return new LayoutSequence(getSequenceClone());
	}
	
}

⌨️ 快捷键说明

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