blob: d9dd71bf636de61f29d4dc6a7fa397c73f809ccd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal;
import java.util.ArrayList;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.ui.IMemento;
public class DetachedPlaceHolder extends PartPlaceholder implements ILayoutContainer {
ArrayList children = new ArrayList();
Rectangle bounds;
/**
* DetachedPlaceHolder constructor comment.
* @param id java.lang.String
*/
public DetachedPlaceHolder(String id, Rectangle bounds) {
super(id);
this.bounds = bounds;
}
/**
* Add a child to the container.
*/
public void add(LayoutPart newPart) {
if (!(newPart instanceof PartPlaceholder))
return;
children.add(newPart);
}
/**
* Return true if the container allows its
* parts to show a border if they choose to,
* else false if the container does not want
* its parts to show a border.
*/
public boolean allowsBorder() {
return false;
}
public Rectangle getBounds() {
return bounds;
}
/**
* Returns a list of layout children.
*/
public LayoutPart[] getChildren() {
LayoutPart result[] = new LayoutPart[children.size()];
children.toArray(result);
return result;
}
/**
* Remove a child from the container.
*/
public void remove(LayoutPart part) {
children.remove(part);
}
/**
* Replace one child with another
*/
public void replace(LayoutPart oldPart, LayoutPart newPart) {
remove(oldPart);
add(newPart);
}
/**
* @see IPersistablePart
*/
public void restoreState(IMemento memento) {
// Read the bounds.
Integer bigInt;
bigInt = memento.getInteger(IWorkbenchConstants.TAG_X);
int x = bigInt.intValue();
bigInt = memento.getInteger(IWorkbenchConstants.TAG_Y);
int y = bigInt.intValue();
bigInt = memento.getInteger(IWorkbenchConstants.TAG_WIDTH);
int width = bigInt.intValue();
bigInt = memento.getInteger(IWorkbenchConstants.TAG_HEIGHT);
int height = bigInt.intValue();
bounds = new Rectangle(x, y, width, height);
// Restore the placeholders.
IMemento childrenMem[] = memento.getChildren(IWorkbenchConstants.TAG_VIEW);
for (int i = 0; i < childrenMem.length; i++) {
PartPlaceholder holder =
new PartPlaceholder(childrenMem[i].getString(IWorkbenchConstants.TAG_ID));
holder.setContainer(this);
children.add(holder);
}
}
/**
* @see IPersistablePart
*/
public void saveState(IMemento memento) {
// Save the bounds.
memento.putInteger(IWorkbenchConstants.TAG_X, bounds.x);
memento.putInteger(IWorkbenchConstants.TAG_Y, bounds.y);
memento.putInteger(IWorkbenchConstants.TAG_WIDTH, bounds.width);
memento.putInteger(IWorkbenchConstants.TAG_HEIGHT, bounds.height);
// Save the views.
for (int i = 0; i < children.size(); i++) {
IMemento childMem = memento.createChild(IWorkbenchConstants.TAG_VIEW);
LayoutPart child = (LayoutPart) children.get(i);
childMem.putString(IWorkbenchConstants.TAG_ID, child.getID());
}
}
public void findSashes(LayoutPart part, PartPane.Sashes sashes) {
ILayoutContainer container = getContainer();
if (container != null) {
container.findSashes(this, sashes);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.internal.ILayoutContainer#allowsAutoFocus()
*/
public boolean allowsAutoFocus() {
return false;
}
}