| /******************************************************************************* |
| * 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; |
| } |
| } |