blob: cd995eeeae57e64dd81efbfbc6ebc46bbddc29a7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2009 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.wst.xsd.ui.internal.adapters;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
import org.eclipse.wst.xsd.ui.internal.adt.actions.BaseSelectionAction;
import org.eclipse.wst.xsd.ui.internal.adt.actions.ShowPropertiesViewAction;
import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IActionProvider;
import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IModelProxy;
import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObjectListener;
import org.eclipse.wst.xsd.ui.internal.adt.facade.IModel;
import org.eclipse.wst.xsd.ui.internal.adt.outline.ITreeElement;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDAttributeDeclarationAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDAttributeGroupDefinitionAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDComplexTypeDefinitionAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDElementAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDSchemaDirectiveAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDModelGroupDefinitionAction;
import org.eclipse.wst.xsd.ui.internal.common.actions.AddXSDSimpleTypeDefinitionAction;
import org.eclipse.xsd.XSDSchema;
public class CategoryAdapter extends XSDBaseAdapter implements IModelProxy, IActionProvider, IADTObjectListener
{
protected String text;
protected Image image;
protected Object parent;
protected int groupType;
protected Collection children, allChildren; // children from current schema, children from current schema and includes
XSDSchema xsdSchema;
public CategoryAdapter(String label, Image image, Collection children, XSDSchema xsdSchema, int groupType)
{
this.text = label;
this.image = image;
this.parent = xsdSchema;
this.xsdSchema = xsdSchema;
this.target = xsdSchema;
this.children = children;
this.groupType = groupType;
}
public final static int ATTRIBUTES = 1;
public final static int ELEMENTS = 2;
public final static int TYPES = 3;
public final static int GROUPS = 5;
public final static int DIRECTIVES = 6;
public final static int NOTATIONS = 7;
public final static int ATTRIBUTE_GROUPS = 8;
public final static int IDENTITY_CONSTRAINTS = 9;
public final static int ANNOTATIONS = 10;
public XSDSchema getXSDSchema()
{
return xsdSchema;
}
public int getGroupType()
{
return groupType;
}
public Image getImage()
{
return image;
}
public String getText()
{
return text;
}
public ITreeElement[] getChildren()
{
return (ITreeElement[]) children.toArray(new ITreeElement[0]);
}
public ITreeElement[] getAllChildren()
{
return (ITreeElement[]) allChildren.toArray(new ITreeElement[0]);
}
public void setChildren(Collection list)
{
children = list;
}
public void setAllChildren(Collection list)
{
allChildren = list;
}
public Object getParent(Object element)
{
return xsdSchema;
}
public boolean hasChildren(Object element)
{
return true;
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
{
}
public String[] getActions(Object object)
{
Collection actionIDs = new ArrayList();
switch (groupType)
{
case TYPES : {
actionIDs.add(AddXSDComplexTypeDefinitionAction.ID);
actionIDs.add(AddXSDSimpleTypeDefinitionAction.ID);
break;
}
case ELEMENTS : {
actionIDs.add(AddXSDElementAction.ID);
break;
}
case GROUPS : {
actionIDs.add(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITION_ID);
break;
}
case ATTRIBUTES : {
actionIDs.add(AddXSDAttributeDeclarationAction.ID);
actionIDs.add(AddXSDAttributeGroupDefinitionAction.ID);
break;
}
case ATTRIBUTE_GROUPS : {
actionIDs.add(AddXSDAttributeGroupDefinitionAction.ID);
break;
}
case DIRECTIVES : {
actionIDs.add(AddXSDSchemaDirectiveAction.INCLUDE_ID);
actionIDs.add(AddXSDSchemaDirectiveAction.IMPORT_ID);
actionIDs.add(AddXSDSchemaDirectiveAction.REDEFINE_ID);
break;
}
}
actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
actionIDs.add(ShowPropertiesViewAction.ID);
return (String [])actionIDs.toArray(new String[0]);
}
public void propertyChanged(Object object, String property)
{
if (getText().equals(property))
notifyListeners(this, property);
}
public List getTypes()
{
return null;
}
public IModel getModel()
{
return (IModel)XSDAdapterFactory.getInstance().adapt(xsdSchema);
}
}