SWT Designer allows you to create the views, editors, perspectives, pref pages, composites, etc. that comprise Eclipse SWT & RCP applications and plug-ins.
Moderators: Konstantin.Scheglov, gnebling, Alexander.Mitin, jwren, Eric Clayberg
by maitscha » Mon Dec 04, 2006 6:55 am
Hello!
I always get the following error when initializing some actions in a ViewPart:
- Code: Select all
private void createActions() {
searchFieldsMenuAction = new SearchFieldMenu(this.getViewSite().getWorkbenchWindow(), searchModel);
searchSourceMenuAction = new SearchSourceMenu(this.getViewSite().getWorkbenchWindow());
}
This is the error:
Operation failed!
Argument cannot be null!
Contact support by e-mail now?
Any ideas?
Regards
Christoph
-
maitscha
-
- Posts: 5
- Joined: Mon Dec 04, 2006 6:50 am
- Location: Vienna
-
by Eric Clayberg » Tue Dec 05, 2006 6:45 am
Can you send us a complete test case and your Eclipse ".log" file?
The log file should indicate what is null.
-
Eric Clayberg
- Moderator
-
- Posts: 4503
- Joined: Tue Sep 30, 2003 6:39 am
- Location: Boston, MA USA
-
by maitscha » Wed Dec 06, 2006 12:01 am
Hello!
Where is the log-file of eclipse located?
Regards
-
maitscha
-
- Posts: 5
- Joined: Mon Dec 04, 2006 6:50 am
- Location: Vienna
-
by Eric Clayberg » Wed Dec 06, 2006 5:06 am
maitscha wrote:Where is the log-file of eclipse located?
It is always located in your workspace
.metadata directory.
-
Eric Clayberg
- Moderator
-
- Posts: 4503
- Joined: Tue Sep 30, 2003 6:39 am
- Location: Boston, MA USA
-
by maitscha » Sat Dec 09, 2006 8:55 am
Hello!
This is what my log-file says:
- Code: Select all
!ENTRY com.swtdesigner 4 4 2006-12-09 18:16:50.421
!MESSAGE Designer internal error [5.1.0.20060908125203]: java.lang.reflect.InvocationTargetException
!STACK 0
com.swtdesigner.properties.PropertyException: java.lang.reflect.InvocationTargetException
at com.swtdesigner.model.swt.jface.action.types.ExternalActionInfo.createAction(ExternalActionInfo.java:97)
at com.swtdesigner.model.swt.jface.action.ActionReference.createItem(ActionReference.java:74)
at com.swtdesigner.model.swt.jface.action.AbstractManagerInfo.fillManager(AbstractManagerInfo.java:128)
at com.swtdesigner.model.swt.jface.action.ToolBarInfo.fillToolBarManager(ToolBarInfo.java:136)
at com.swtdesigner.model.swt.jface.action.ToolBarInfo.createToolBarManager(ToolBarInfo.java:130)
at com.swtdesigner.model.swt.rcp.parts.ViewPartInfo$ViewControl.<init>(ViewPartInfo.java:317)
at com.swtdesigner.model.swt.rcp.parts.ViewPartInfo.createPartControl(ViewPartInfo.java:90)
at com.swtdesigner.model.swt.rcp.parts.WorkbenchPartInfo.createSingleControl(WorkbenchPartInfo.java:204)
at com.swtdesigner.model.swt.widgets.control.ControlInfo.createControl(ControlInfo.java:636)
at com.swtdesigner.model.swt.widgets.composite.AbstractCompositeInfo.createControl(AbstractCompositeInfo.java:350)
at com.swtdesigner.model.swt.widgets.composite.AbstractCompositeInfo.createGUIComponent(AbstractCompositeInfo.java:343)
at com.swtdesigner.model.JavaInfo.notifyPropertyChanged(JavaInfo.java:5660)
at com.swtdesigner.model.swt.widgets.control.ControlInfo.notifyPropertyChanged(ControlInfo.java:345)
at com.swtdesigner.model.swt.rcp.parts.WorkbenchPartInfo.notifyPropertyChanged(WorkbenchPartInfo.java:189)
at com.swtdesigner.model.JavaInfo.notifyPropertyChanged(JavaInfo.java:5634)
at com.swtdesigner.gef.common.property.DesignerEditorPropertyComposite.handleRootNodeSelected(DesignerEditorPropertyComposite.java:577)
at com.swtdesigner.gef.common.property.DesignerEditorPropertyComposite.updatePropertyComposite(DesignerEditorPropertyComposite.java:757)
at com.swtdesigner.gef.DesignerEditor.parseCompilationUnit(DesignerEditor.java:1036)
at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:941)
at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:926)
at com.swtdesigner.editors.MultiPageEditor.showDesignEditor(MultiPageEditor.java:402)
at com.swtdesigner.editors.MultiPageEditor$2.widgetSelected(MultiPageEditor.java:175)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:937)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:709)
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3171)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1953)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:288)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.swtdesigner.model.swt.widgets.ConstructorSourcePropertiesHelper.createObject(ConstructorSourcePropertiesHelper.java:207)
at com.swtdesigner.model.swt.jface.action.types.ExternalActionInfo.createAction(ExternalActionInfo.java:85)
... 52 more
Caused by: java.lang.NullPointerException
at org.dseas.base.util.BundleUtils.getFileUrl(BundleUtils.java:27)
at org.dseas.ui.rcp.search.OpenSearchViewMenu.<init>(OpenSearchViewMenu.java:87)
... 58 more
!ENTRY com.swtdesigner 4 4 2006-12-09 18:16:50.437
!MESSAGE Designer internal error [5.1.0.20060908125203]: Argument cannot be null
!STACK 0
java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.java:3358)
at org.eclipse.swt.SWT.error(SWT.java:3297)
at org.eclipse.swt.SWT.error(SWT.java:3268)
at org.eclipse.swt.widgets.Widget.error(Widget.java:435)
at org.eclipse.swt.widgets.Widget.checkParent(Widget.java:267)
at org.eclipse.swt.widgets.Widget.<init>(Widget.java:141)
at org.eclipse.swt.widgets.Control.<init>(Control.java:96)
at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:72)
at org.eclipse.swt.widgets.Composite.<init>(Composite.java:93)
at com.swtdesigner.model.swt.widgets.composite.AbstractCompositeInfo.createControl(AbstractCompositeInfo.java:355)
at com.swtdesigner.model.swt.widgets.composite.AbstractCompositeInfo.createGUIComponent(AbstractCompositeInfo.java:343)
at com.swtdesigner.model.JavaInfo.notifyPropertyChanged(JavaInfo.java:5660)
at com.swtdesigner.model.swt.widgets.control.ControlInfo.notifyPropertyChanged(ControlInfo.java:345)
at com.swtdesigner.model.swt.rcp.parts.WorkbenchPartInfo.notifyPropertyChanged(WorkbenchPartInfo.java:189)
at com.swtdesigner.model.JavaInfo.notifyPropertyChanged(JavaInfo.java:5634)
at com.swtdesigner.gef.common.property.DesignerEditorPropertyComposite.handleRootNodeSelected(DesignerEditorPropertyComposite.java:577)
at com.swtdesigner.gef.common.property.DesignerEditorPropertyComposite.updatePropertyComposite(DesignerEditorPropertyComposite.java:757)
at com.swtdesigner.gef.DesignerEditor.parseCompilationUnit(DesignerEditor.java:1036)
at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:941)
at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:926)
at com.swtdesigner.editors.MultiPageEditor.showDesignEditor(MultiPageEditor.java:402)
at com.swtdesigner.editors.MultiPageEditor$2.widgetSelected(MultiPageEditor.java:175)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:937)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:709)
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3171)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1953)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:288)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
-
maitscha
-
- Posts: 5
- Joined: Mon Dec 04, 2006 6:50 am
- Location: Vienna
-
by maitscha » Sat Dec 09, 2006 8:58 am
And here is the class (ViewPart):
- Code: Select all
package org.dseas.ui.rcp.search;
import java.util.ArrayList;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.part.ViewPart;
import org.dseas.base.logging.Logger;
import org.dseas.ui.rcp.common.adapter.TableAdapterFactory;
import org.dseas.ui.rcp.common.provider.TableContentProvider;
import org.dseas.ui.rcp.common.provider.TableLabelProvider;
public class SearchView extends ViewPart {
public static final String ID = "org.dseas.ui.rcp.search.SearchView"; //$NON-NLS-1$
private TableViewer tableViewer;
private Table table;
private Composite searchFieldComposite;
private FormToolkit toolkit;
private SearchFieldMenu searchFieldsMenuAction;
private OpenSearchViewMenu searchSourceMenuAction;
private ArrayList<Text> searchFields;
private ArrayList<TableColumn> resultColumns;
private ArrayList<String> filters;
private Object[] records;
private RecordFilter recordFilter;
private SearchModel searchModel;
private final Logger log = new Logger(SearchView.class);
/**
* Default constructor
*/
public SearchView() {
searchModel = new PatientSearchModel();
}
/**
* Constructor which creates a new SearchView with a
* given search model.
* @param model
*/
public SearchView(SearchModel model) {
this.searchModel = model;
}
/* (non-Javadoc)
* @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)
*/
@Override
public void init(IViewSite arg0) throws PartInitException {
super.init(arg0);
toolkit = new FormToolkit(Display.getCurrent());
}
/**
* Create contents of the view part
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
Composite rootComposite = new Composite(parent, SWT.NONE);
rootComposite.setLayout(new FormLayout());
final CTabFolder tabFolder = new CTabFolder(rootComposite, SWT.NONE);
tabFolder.setTabPosition(SWT.BOTTOM);
final FormData formData = new FormData();
formData.right = new FormAttachment(100, 0);
formData.top = new FormAttachment(0, 0);
formData.left = new FormAttachment(0, 0);
formData.bottom = new FormAttachment(100, 0);
tabFolder.setLayoutData(formData);
toolkit.adapt(tabFolder, true, true);
final CTabItem searchTabItem = new CTabItem(tabFolder, SWT.NONE);
searchTabItem.setText("Suche");
final Composite searchComposite = new Composite(tabFolder, SWT.NONE);
final GridLayout gridLayout_2 = new GridLayout();
searchComposite.setLayout(gridLayout_2);
toolkit.adapt(searchComposite);
searchTabItem.setControl(searchComposite);
searchFieldComposite = new Composite(searchComposite, SWT.NONE);
searchFieldComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
searchFieldComposite.setLayout(gridLayout);
toolkit.adapt(searchFieldComposite);
final Composite tableComposite = new Composite(searchComposite, SWT.NONE);
tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
tableComposite.setLayout(new FillLayout());
toolkit.adapt(tableComposite);
tableViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL );
this.getSite().setSelectionProvider(tableViewer);
tableViewer.setLabelProvider(new TableLabelProvider());
tableViewer.setContentProvider(new TableContentProvider());
table = tableViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
toolkit.adapt(table, true, true);
//
tabFolder.setSelection(searchTabItem);
final CTabItem optionTabItem = new CTabItem(tabFolder, SWT.NONE);
optionTabItem.setText("Optionen");
createAdditionalPartControl();
initializeToolBar();
initializeMenu();
}
/**
* Create additional part controls outside of the tabItems
*/
public void createAdditionalPartControl() {
if (toolkit == null || tableViewer == null) {
return;
}
searchFields = new ArrayList<Text>();
filters = new ArrayList<String>();
recordFilter = new RecordFilter(filters,records);
for (int i=0; i<searchModel.getFieldCount(); i++) {
SearchField f = searchModel.getField(i);
toolkit.createLabel(searchFieldComposite, f.name);
Text field = toolkit.createText(searchFieldComposite, null, SWT.NONE);
field.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
field.setVisible(f.visible);
searchFields.add(field);
field.addModifyListener(new SearchFieldModifyListener(i) {
public void modifyText(ModifyEvent e) {
Text text = (Text)e.widget;
filters.set(idx,text.getText());
table.setItemCount(recordFilter.getSize());
tableViewer.refresh();
}
});
}
tableViewer.getTable().addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(final MouseEvent e) {
int row = tableViewer.getTable().getSelectionIndex();
Object o = tableViewer.getElementAt(row);
searchModel.openEditorPart(o);
}
});
tableViewer.getTable().addListener(SWT.SetData, new Listener () {
public void handleEvent(Event event) {
TableItem item = (TableItem)event.item;
int idx = tableViewer.getTable().indexOf(item);
Object o = records[idx];
}
});
resultColumns = new ArrayList<TableColumn>();
for (int i=0; i<searchModel.getColumnCount(); i++) {
ResultColumn c = searchModel.getColumn(i);
TableColumn column = new TableColumn(table, SWT.NONE);
column.setWidth(c.columnWitdh);
column.setText(c.name);
resultColumns.add(column);
}
records = searchModel.getRecords();
tableViewer.setInput(records);
}
/**
* Initialize the toolbar
*/
private void initializeToolBar() {
//searchFieldsMenuAction = new SearchFieldMenu(this.getViewSite().getWorkbenchWindow(), searchModel);
searchSourceMenuAction = new OpenSearchViewMenu(this.getViewSite().getWorkbenchWindow());
IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
toolbarManager.add(searchSourceMenuAction);
//toolbarManager.add(searchFieldsMenuAction);
}
/**
* Initialize the menu
*/
private void initializeMenu() {
IMenuManager menuManager = getViewSite().getActionBars()
.getMenuManager();
}
@Override
public void setFocus() {
}
}
-
maitscha
-
- Posts: 5
- Joined: Mon Dec 04, 2006 6:50 am
- Location: Vienna
-
by Eric Clayberg » Sat Dec 09, 2006 9:43 am
Based on your log file, here's the problem:
- Code: Select all
java.lang.NullPointerException
at org.dseas.base.util.BundleUtils.getFileUrl(BundleUtils.java:27)
at org.dseas.ui.rcp.search.OpenSearchViewMenu.<init>(OpenSearchViewMenu.java:87)
Fix that NPE in the
OpenSearchViewMenu class and it should work fine.
Looking at your source code, the basic problem is in the following line of code:
- Code: Select all
searchSourceMenuAction = new OpenSearchViewMenu(this.getViewSite().getWorkbenchWindow());
At design time,
this.getViewSite().getWorkbenchWindow() will always be
null, so you need to code
OpenSearchViewMenu defensively.
-
Eric Clayberg
- Moderator
-
- Posts: 4503
- Joined: Tue Sep 30, 2003 6:39 am
- Location: Boston, MA USA
-
by maitscha » Sun Dec 10, 2006 2:07 am
Thank you, that fixed my problem!
-
maitscha
-
- Posts: 5
- Joined: Mon Dec 04, 2006 6:50 am
- Location: Vienna
-
by czerwonka » Tue Jan 30, 2007 3:36 pm
Eric,
It may make sense to throw the stack trace into the dialog so user know that it's potentially their code no playing nice. Thoughts?
-
czerwonka
-
- Posts: 12
- Joined: Wed Feb 11, 2004 5:31 am
by Eric Clayberg » Wed Feb 07, 2007 7:42 pm
czerwonka wrote:It may make sense to throw the stack trace into the dialog so user know that it's potentially their code no playing nice. Thoughts?
BTW, if you keep the Eclipse
Error Log view open, you can double-click on any excxeption that appears very easily.
-
Eric Clayberg
- Moderator
-
- Posts: 4503
- Joined: Tue Sep 30, 2003 6:39 am
- Location: Boston, MA USA
-
Return to SWT Designer
Who is online
Users browsing this forum: No registered users and 1 guest