RCP Aufruf eines Editors über Doppelklick

unltd

Mitglied
Hi,

ich versuche mich gerade ein wenig an RCP. Hab mich am Tutorial orientiert
http://www.vogella.de/articles/RichClientPlatform/article.html#editor und scheitere aber leider an dem Aufruf des Editors über den Doppelklick. Kapitel 9.6 im Tut.

Das Comman habe ich richtig gesetzt, also es wird die Methode execute im CallEditor aufgerufen, nur leider erscheint dort nicht wie erwartet und vorgegeben das Label mit Textfeld :(

Der Code ist vollständig im Tutorial enthalten.. hoffe ihr könnt mir helfen..
 
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

}

}
 
Zurück