package com.netifera.platform.ui.probe.actions;
import org.eclipse.jface.action.Action;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.netifera.platform.api.model.ISpace;
import com.netifera.platform.api.model.IWorkspace;
import com.netifera.platform.api.probe.IProbe;
import com.netifera.platform.ui.probe.Activator;
import com.netifera.platform.ui.probe.views.ProbeListView;
import com.netifera.platform.ui.spaces.SpaceEditorInput;
public class OpenSpaceAction extends Action {
private ProbeListView view;
public OpenSpaceAction(ProbeListView view) {
this.view = view;
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/new_space.png"));
setText("Open New Space");
}
public void run() {
IProbe probe = view.getSelectedProbe();
if (probe != null)
openSpaceForProbe(probe);
}
private void openSpaceForProbe(IProbe probe) {
final ISpace space = openSpace(probe);
openEditor(space);
}
private ISpace openSpace(IProbe probe) {
final IWorkspace workspace = Activator.getDefault().getModel().getCurrentWorkspace();
final ISpace space = workspace.createSpace(probe.getEntity(), probe);
space.open();
return space;
}
private void openEditor(ISpace space) {
final IEditorInput input = new SpaceEditorInput(space);
try {
view.getViewSite().getPage().openEditor(input, SpaceEditorInput.ID);
} catch(PartInitException e) {
// XXX
e.printStackTrace();
}
}
}