/*******************************************************************************
* Copyright (c) 2011 Wind River Systems, Inc. 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:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.tm.te.ui.views.workingsets;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.tm.te.runtime.interfaces.workingsets.IWorkingSetElement;
import org.eclipse.tm.te.ui.views.interfaces.workingsets.IWorkingSetNameIDs;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IPersistableElement;
/**
* A WorkingSetElementHolder is a place holder for an {@link IWorkingSetElement}. It contains the
* working set element's id and its working set name that it belongs to. A WorkingSetElementHolder
* can only belong to one working set, while multiple WorkingSetElementHolder which have a same
* working set element's id. That means a working set element can be added to multiple working sets
* at the same time.
* <p>
* A WorkingSetElementHolder instance can be persisted and restored by an element factory.
*/
public final class WorkingSetElementHolder extends PlatformObject implements IPersistableElement {
// The working set element's id.
private String elementId;
// The working set's name that it belongs to.
private String wsName;
// The working set element
private IWorkingSetElement element;
/**
* Create an empty holder.
*/
public WorkingSetElementHolder() {
}
/**
* Create an holder with a specified working set element's id and and a working set name.
*
* @param wsName The working set name.
* @param elementId The working set element's id.
*/
public WorkingSetElementHolder(String wsName, String elementId) {
this.elementId = elementId;
this.wsName = wsName;
}
/**
* Set the working set element's id.
*
* @param id The working set element's id.
*/
public void setElementId(String id) {
this.elementId = id;
}
/**
* Get the working set element's id.
*
* @return The working set element's id.
*/
public String getElementId() {
return elementId;
}
/**
* Set the working set's name.
*
* @param name The working set name.
*/
public void setWorkingSetName(String name) {
this.wsName = name;
}
/**
* Get the working set's name.
*
* @return The working set's name.
*/
public String getWorkingSetName() {
return wsName;
}
/**
* Set the working set element.
*
* @param element The working set element.
*/
public void setElement(IWorkingSetElement element) {
this.element = element;
}
/**
* Get the working set element.
*
* @return The working set element.
*/
public IWorkingSetElement getElement() {
return element;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPersistableElement#getFactoryId()
*/
@Override
public String getFactoryId() {
return "org.eclipse.tm.te.ui.views.workingsets.WorkingSetElementHolderFactory"; //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPersistable#saveState(org.eclipse.ui.IMemento)
*/
@Override
public void saveState(IMemento memento) {
memento.putString(IWorkingSetNameIDs.FACTORY_ID, getFactoryId());
memento.putString(IWorkingSetNameIDs.ATTR_ELEMENTID, elementId);
memento.putString(IWorkingSetNameIDs.ATTR_WORKINGSET_NAME, wsName);
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
@Override
public Object getAdapter(Class adapter) {
if (IPersistableElement.class.equals(adapter)) {
return this;
}
if (IWorkingSetElement.class.equals(adapter)) {
return element;
}
return super.getAdapter(adapter);
}
}