blob: 15270506896dd454b450f5f0562a54386c4837c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.examples.propertysheet;
import java.util.Vector;
import org.eclipse.swt.graphics.RGB;
/**
* A Group Element
*/
public class GroupElement extends OrganizationElement {
public static String P_USERS = "users"; //$NON-NLS-1$
public static String P_SUBGROUPS = "subgroups"; //$NON-NLS-1$
public static String P_CONTENTS = "contents"; //$NON-NLS-1$
private Vector subGroups;
private Vector users;
// must be synchronized to contain both the references of subGroups and users
private Vector contents;
/**
* Constructor.
* Creates a new GroupElement within the passed parent GroupElement,
* gives it the passed name property, sets Icon.
*
* @param name the name
* @param parent the parent
*/
public GroupElement(String name, GroupElement parent) {
super(name, parent);
}
/**
* Adds an OrganizationElement to this GroupElement.
*
* @param userGroup The Organization Element
*/
public void add(OrganizationElement userGroup) {
if (userGroup.isUser() || userGroup.isGroup()) {
getContents().add(userGroup);
}
if (userGroup.isGroup()) {
getSubGroups().add(userGroup);
// synchronizes backpointer of userGroup: defensive
userGroup.setParent(this);
}
if (userGroup.isUser()) {
getUsers().add(userGroup);
// synchronizes backpointer of userGroup: defensive
userGroup.setParent(this);
}
}
/**
* Creates a new <code>GroupElement</code>
* nested in this <code>GroupElement<code>
*
* @param name the name of the sub group
*/
public GroupElement createSubGroup(String name) {
GroupElement newGroup = new GroupElement(name, this);
add(newGroup);
return newGroup;
}
/**
* Creates a new <code>UserElement</code>
*
* @param the name of the user element
*/
public UserElement createUser(String name) {
UserElement newUser = new UserElement(name, this);
add(newUser);
return newUser;
}
/**
* Deletes an OrganizationElement from this GroupElement.
*
* @param userGroup the Organization Element
*/
public void delete(OrganizationElement userGroup) {
if (userGroup.isUser() || userGroup.isGroup()) {
getContents().remove(userGroup);
}
if (userGroup.isGroup()) {
getSubGroups().remove(userGroup);
// synchronizes backpointer of userGroup: defensive
}
if (userGroup.isUser()) {
getUsers().remove(userGroup);
// synchronizes backpointer of userGroup: defensive
}
}
/* (non-Javadoc)
* Method declared on IWorkbenchAdapter
*/
public Object[] getChildren(Object o) {
return getContents().toArray();
}
/**
* Returns the content
*/
private Vector getContents() {
if (contents == null)
contents = new Vector();
return contents;
}
/* (non-Javadoc)
* Method declared on IPropertySource
*/
public Object getEditableValue() {
return this.toString();
}
/**
* Returns the error message
*/
public String getErrorMessage() {
return null;
}
/**
* Returns the subgroups
*/
private Vector getSubGroups() {
if (subGroups == null)
subGroups = new Vector();
return subGroups;
}
/**
* Returns the users
*/
private Vector getUsers() {
if (users == null)
users = new Vector();
return users;
}
/* (non-Javadoc)
* Method declared on OrganizationElement
*/
public boolean isGroup() {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getForeground(java.lang.Object)
*/
public RGB getForeground(Object element) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getBackground(java.lang.Object)
*/
public RGB getBackground(Object element) {
return null;
}
}