// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.providers; import java.util.ArrayList; import java.util.Iterator; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPersistableElement; import com.amalto.workbench.editors.XObjectBrowser; import com.amalto.workbench.editors.XObjectEditor; import com.amalto.workbench.models.IXObjectModelListener; import com.amalto.workbench.models.TreeObject; public class XObjectBrowserInput implements IEditorInput, IXObjectModelListener { Object model; String name; ArrayList<IXObjectModelListener> listeners = new ArrayList<IXObjectModelListener>(); public XObjectBrowserInput(Object model, String name) { this.model = model; this.name = name; if (!(this.model instanceof TreeObject)) return; TreeObject xobject = (TreeObject) this.model; xobject.addListener(this); } public Object getAdapter(Class adapter) { if (adapter.equals(XObjectEditor.class)) return model; if (adapter.equals(XObjectBrowser.class)) return model; if (adapter.equals(Object.class)) return model; return null; } public boolean exists() { return false; } public ImageDescriptor getImageDescriptor() { return ImageDescriptor.getMissingImageDescriptor(); // FIXME: Must Return an image to editors for Xtentits objects } public String getName() { return name; } public IPersistableElement getPersistable() { return null; } public String getToolTipText() { TreeObject xobject = (TreeObject) model; return xobject.getServerRoot().getDisplayName() + " - " + TreeObject.getTypeName(xobject.getType()) + " - "//$NON-NLS-1$//$NON-NLS-2$ + xobject.getDisplayName(); } /** * Used to determine whether a new Editor should be opened or an existing one reused */ public boolean equals(Object obj) { if (!(obj instanceof XObjectBrowserInput)) return false; return this.getToolTipText().equals(((XObjectBrowserInput) obj).getToolTipText()); } public Object getModel() { return model; } public void setModel(Object model) { this.model = model; } public void setName(String name) { this.name = name; } /****** * Listeners interface It basically transmits events to other registered IXObjectModelListeners * */ public void addListener(IXObjectModelListener listener) { listeners.add(listener); } public void removeListener(IXObjectModelListener listener) { listeners.remove(listener); } // IXObjectModelListener Implementation public void handleEvent(int type, TreeObject parent, TreeObject child) { for (Iterator iter = listeners.iterator(); iter.hasNext();) { ((IXObjectModelListener) iter.next()).handleEvent(type, parent, child); } } }