package samples.model; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.views.properties.*; import com.ibm.etools.systems.core.ui.SystemMenuManager; import com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter; import com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter; import samples.subsystems.*; import java.util.*; /** * This is the adapter which enables us to work with our remote developer resources. */ public class DeveloperResourceAdapter extends AbstractSystemViewAdapter implements ISystemRemoteElementAdapter { /** * @see com.ibm.etools.systems.core.ui.view.ISystemViewElementAdapter#addActions(SystemMenuManager, IStructuredSelection, Shell, String) */ public void addActions(SystemMenuManager menu,IStructuredSelection selection,Shell parent,String menuGroup) { } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(Object) */ public ImageDescriptor getImageDescriptor(Object object) { return RSESamples.RSESamplesPlugin.getDefault().getImageDescriptor("ICON_ID_DEVELOPER"); } /** * @see com.ibm.etools.systems.core.ui.view.ISystemViewElementAdapter#getText(Object) */ public String getText(Object element) { return ((DeveloperResource)element).getName(); } /** * @see com.ibm.etools.systems.subsystems.IRemoteObjectIdentifier#getAbsoluteName(Object) */ public String getAbsoluteName(Object object) { DeveloperResource devr = (DeveloperResource)object; return "Devr_" + devr.getId(); } /** * @see com.ibm.etools.systems.core.ui.view.ISystemViewElementAdapter#getType(Object) */ public String getType(Object element) { return "Developer resource"; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(Object) */ public Object getParent(Object o) { return null; // not really used, which is good because it is ambiguous } /** * @see com.ibm.etools.systems.core.ui.view.ISystemViewElementAdapter#hasChildren(Object) */ public boolean hasChildren(Object element) { return false; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(Object) */ public Object[] getChildren(Object o) { return null; } /** * @see com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter#internalGetPropertyDescriptors() */ protected IPropertyDescriptor[] internalGetPropertyDescriptors() { // the following array should be made static to it isn't created every time PropertyDescriptor[] ourPDs = new PropertyDescriptor[2]; ourPDs[0] = new PropertyDescriptor("devr_id", "Id"); ourPDs[0].setDescription("ID number"); ourPDs[1] = new PropertyDescriptor("devr_dept", "Department"); ourPDs[1].setDescription("Department number"); return ourPDs; } /** * @see com.ibm.etools.systems.core.ui.view.AbstractSystemViewAdapter#internalGetPropertyValue() */ public Object internalGetPropertyValue(Object key) { // propertySourceInput holds the currently selected object DeveloperResource devr = (DeveloperResource)propertySourceInput; if (key.equals("devr_id")) return devr.getId(); else if (key.equals("devr_dept")) return devr.getDeptNbr(); return null; } // -------------------------------------- // ISystemRemoteElementAdapter methods... // -------------------------------------- /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getAbsoluteParentName(Object) */ public String getAbsoluteParentName(Object element) { return "root"; // not really applicable as we have no unique hierarchy } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getSubSystemFactoryId(Object) */ public String getSubSystemFactoryId(Object element) { return "samples.subsystems.factory"; // as declared in extension in plugin.xml } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getRemoteTypeCategory(Object) */ public String getRemoteTypeCategory(Object element) { return "developers"; // Course grained. Same for all our remote resources. } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getRemoteType(Object) */ public String getRemoteType(Object element) { return "developer"; // Fine grained. Unique to this resource type. } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getRemoteSubType(Object) */ public String getRemoteSubType(Object element) { return null; // Very fine grained. We don't use it. } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#refreshRemoteObject(Object, Object) */ public boolean refreshRemoteObject(Object oldElement, Object newElement) { DeveloperResource oldDevr= (DeveloperResource)oldElement; DeveloperResource newDevr = (DeveloperResource)newElement; newDevr.setName(oldDevr.getName()); return false; } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getRemoteParent(Shell, Object) */ public Object getRemoteParent(Shell shell, Object element) throws Exception { return null; // maybe this would be a Department obj, if we fully fleshed out our model } /** * @see com.ibm.etools.systems.core.ui.view.ISystemRemoteElementAdapter#getRemoteParentNamesInUse(Shell, Object) */ public String[] getRemoteParentNamesInUse(Shell shell, Object element) throws Exception { // developers names do not have to be unique! So we don't need to implement this! return null; } }