Bin jetzt schon ein bisschen weiter gekommen, es fliegt eine Exception bei der page.openEditor(...); Funktion. Was stimmt denn da nicht?
public class CallEditor extends AbstractHandler implements IHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
// Get the view
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
IWorkbenchPage page = window.getActivePage();
View view = (View) page.findView(View.ID);
TableViewer viewer = view.getViewer();
// Get the selection
ISelection selection = viewer.getSelection();
if (selection instanceof IStructuredSelection) {
Object obj = ((IStructuredSelection) selection).getFirstElement();
// If we had a selection lets open the editor
if (obj != null) {
Person person = (Person) obj;
MyNameEditorInput input = new MyNameEditorInput(person
.getLastName());
try {
page.openEditor(input, MyNameEditor.ID);
viewer.setSelection(viewer.getSelection());
} catch (PartInitException e) {
System.out.println("exception");
}
}
}
return null;
}
}
package editortest.editors;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
public class MyNameEditorInput implements IEditorInput {
private final String lastname;
public MyNameEditorInput(String lastname) {
this.lastname = lastname;
}
@Override
public boolean exists() {
// TODO Auto-generated method stub
return true;
}
@Override
public ImageDescriptor getImageDescriptor() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getName() {
return lastname;
}
@Override
public IPersistableElement getPersistable() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.IEditorInput#getToolTipText()
*/
@Override
public String getToolTipText() {
return "My Tool Tip";
}
@Override
public Object getAdapter(Class adapter) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean equals(Object obj) {
if (super.equals(obj)) {
return true;
}
if (obj instanceof MyNameEditorInput) {
return lastname.equals(((MyNameEditorInput) obj).getName());
}
return false;
}
@Override
public int hashCode() {
return lastname.hashCode();
}
}
package editortest.editors;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
public class MyNameEditor extends EditorPart {
public static final String ID = "editortest.editors.MyNameEditor";
private Text text1;
private Text text2;
public MyNameEditor() {
// TODO Auto-generated constructor stub
}
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
@Override
public void doSaveAs() {
// TODO Auto-generated method stub
}
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
setSite(site);
setInput(input);
setPartName(input.getName());
}
@Override
public boolean isDirty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}
@Override
public void createPartControl(Composite parent) {
GridLayout layout = new GridLayout();
layout.numColumns = 2;
parent.setLayout(layout);
Label label1 = new Label(parent, SWT.BORDER);
label1.setText("First Name");
text1 = new Text(parent, SWT.BORDER);
Label label2 = new Label(parent, SWT.BORDER);
label2.setText("Last Name");
text2 = new Text(parent, SWT.BORDER);
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
}