package LinGUIne.parts.advanced;
import org.eclipse.swt.widgets.Composite;
import LinGUIne.extensions.IEditorSettings;
import LinGUIne.extensions.IProjectDataEditor;
import LinGUIne.extensions.VisualizationView;
import LinGUIne.model.IProjectData;
import LinGUIne.model.Project;
import LinGUIne.model.VisualResult;
import LinGUIne.model.VisualResultContents;
/**
* Generic container editor for all VisualResult subclasses.
*
* @author Kyle Mullins
*/
public class VisualResultViewEditor implements IProjectDataEditor {
private VisualResult visualResult;
private VisualResultContents contents;
private Project parentProject;
private Composite viewParent;
private DirtyStateChangedListener dirtyListener;
private boolean isDirty;
@Override
public boolean canOpenData(IProjectData data, Project proj) {
return data.getClass().equals(VisualResult.class);
}
@Override
public boolean hasEditorSettings() {
return contents.hasSettings();
}
@Override
public IEditorSettings getEditorSettings() {
return contents.getSettings();
}
@Override
public void createComposite(Composite parent) {
viewParent = parent;
VisualizationView visualization = contents.getVisualizationView();
visualization.createPartControl(viewParent);
}
@Override
public void setInputData(IProjectData data, Project parentProj) {
if(canOpenData(data, parentProj)){
visualResult = (VisualResult)data;
contents = (VisualResultContents)visualResult.getContents();
parentProject = parentProj;
}
}
@Override
public IProjectData getInputProjectData() {
return visualResult;
}
@Override
public Project getInputParentProject() {
return parentProject;
}
@Override
public void registerDirtyStateListener(DirtyStateChangedListener listener) {
dirtyListener = listener;
}
@Override
public boolean saveChanges() {
//At least for now we'll say since the editor will never get dirty,
//you can't save it either.
return false;
}
@Override
public String getPartLabel() {
return visualResult.getName();
}
@Override
public String getPartIconURI() {
return null;
}
public void setDirty(boolean dirty){
if(isDirty != dirty){
isDirty = dirty;
dirtyListener.dirtyChanged(isDirty);
}
}
}