ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1062
1062
EMPFEHLEN
-
23.07.09 10:17 #1
- Registriert seit
- Aug 2006
- Beiträge
- 23
Hi,
ich hab mal wieder ein Problem.
Ich habe in einer RCP-Anwendung ein ViewerFilter auf meine Table gelegt. Soweit alles ok, wenn ich jetzt jedoch die Anwendung ausführe kommt folgender Fehler:
Could not create the view: null argument:
org.eclipse.core.runtime.AssertionFailedException: null argument
hier der Quellcode
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
private TestFilter filter; public void createPartControl(Composite parent) { .... filter = new TestFilter(); .... searchButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { filter.setSearchText(searchText.getText()); tableviewer.refresh(); }); ... tableviewer.addFilter(filter);
hier die Filterklasse:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; public class TestFilter extends ViewerFilter { private String searchString; public void setSearchText(String s) { // Search must be a substring of the existing value this.searchString = ".*" + s + ".*"; } @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (searchString == null || searchString.length() == 0) { return true; } TestMethod t = (TestMethod) element; if (t.getDescription().matches(searchString)) { return true; } return false; } }
MfG JangoGeändert von Jango Qel Droma (23.07.09 um 10:31 Uhr)
-
23.07.09 10:24 #2Tobias Köhler Tutorials.de Gastzugang
Das kann denke ich nichts werden, da du zu dem Viewer einen Filter hinzufügen willst, der noch nicht initialisiert wurde.
-
23.07.09 10:27 #3
- Registriert seit
- Aug 2006
- Beiträge
- 23
Hi,
ja, sry, hab ne zeile vergessen, die steht drin, die exception kommt trotzdem.
MfG JangoGeändert von Jango Qel Droma (23.07.09 um 10:31 Uhr)
-
Bitte poste doch mal den ganzen StackTrace. Irgendwo muss ja eine Zeilennummer von deinem Code auftauchen, die die Exception bewirkt.
Hast du eine Entwicklungsumgebung wie Java? Dann setze doch einen Breackpoint auf diese Exception und schau warum es da Probleme gibt.
-
23.07.09 12:26 #5
- Registriert seit
- Aug 2006
- Beiträge
- 23
Hi,
hier ist der komplette Stacktrache:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:86) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:74) at org.eclipse.jface.viewers.StructuredViewer.disassociate(StructuredViewer.java:618) at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:719) at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:633) at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:620) at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1430) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1428) at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1387) at org.eclipse.jface.viewers.StructuredViewer.addFilter(StructuredViewer.java:567) at testanalysis.View.createPartControl(View.java:106) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:371) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:230) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:306) at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:531) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256) at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209) at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1608) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:649) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:576) at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568) at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:271) at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:964) at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2593) at org.eclipse.ui.internal.WorkbenchWindow$25.run(WorkbenchWindow.java:2873) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:2854) at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:759) at org.eclipse.ui.internal.Workbench$21.runWithException(Workbench.java:1027) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$27.runWithException(Workbench.java:1361) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:178) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4251) at org.eclipse.ui.internal.StartupThreading.runWithoutExceptions(StartupThreading.java:94) at org.eclipse.ui.internal.Workbench.init(Workbench.java:1356) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2312) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at testanalysis.Application.start(Application.java:20) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 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.equinox.launcher.Main.invokeFramework(Main.java:549) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1236) at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
wenn ich debugge springt er in die Funktion addFilter und wirft sofort die exception.
Die Zeilennummer im Stacktrace bezieht sich auf die Zeile mit dem addFilter.
MfG Jango
-
Hmm also ich kann bei mir den JFace Sourcecode anschauen. Vielleicht schaust du da mal rein. Aber irgendwas scheinst du vergessen haben zu machen. So direkt kann ich das so aber auch nicht sagen.
Hast du mal Beispielcode zum TableViewer und ViewerFilter angeschaut und geguckt ob da vielleicht irgendwas steht was du noch nicht gemacht hast?
-
23.07.09 14:01 #7
- Registriert seit
- Aug 2006
- Beiträge
- 23
Hi,
@zeja
das habe ich als aller erstes geprüft, ob ich nicht irgendwas vergessen habe. Als Beispiel für den Filter habe ich das hier gefunden: Beispiel und laut dem, reicht das alles aus, damit es funktioniert.
MfG Jango
-
Kannst du noch mehr von deinem Code posten? An dem ViewerFilter selber liegts wohl nicht. Irgendwas muss an dem TableViewer nicht richtig sein.
-
23.07.09 14:23 #9
- Registriert seit
- Aug 2006
- Beiträge
- 23
ok hier ist der code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
private TableViewer viewer; private String[] header = {"id", "Name", "Description", "Thread", "Scenario", "Loop", "Step", "Duration", "Started at", "Finished at", "Exception" }; private TableItem item; private TestFilter filter; public void createPartControl(Composite parent) { GridLayout layout = new GridLayout(3, false); parent.setLayout(layout); ReadXMLFile.readXML("test.xml"); viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); for(int i=0; i<header.length; i++){ createTableHeader(header[i]); } Label searchLabel = new Label(parent, SWT.NONE); searchLabel.setText("Search: "); final Text searchText = new Text(parent, SWT.BORDER | SWT.SEARCH); searchText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); Button searchButton = new Button(parent, SWT.NONE); searchButton.setText("Filter"); filter = new TestFilter(); searchButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { filter.setSearchText(searchText.getText()); viewer.refresh(); } }); viewer.getTable().setHeaderVisible(true); viewer.getTable().setLinesVisible(true); TableColumn[] columns = viewer.getTable().getColumns(); //Auf jede Tabellenspalte einen Listener legen for (int i = 0; i < columns.length; i++) { final int _i = i; columns[i].addListener(SWT.Selection, new Listener() { private int colPos = -1; private boolean sortFlag = true; { colPos = _i; } public void handleEvent(Event event) { sortFlag = !sortFlag; //Sort TableItem[] tableItems = viewer.getTable().getItems(); sortTable(viewer.getTable(), tableItems, colPos, sortFlag); } }); } viewer.addFilter(filter); GridData gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 3; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL; viewer.getControl().setLayoutData(gridData); }
MfG Jango
-
Das einzige was mir auffält ist, dass du vor dem hinzufügen des Filters noch keinen Input gesetzt hast. Wenn der direkt versucht zu filtern gibts dadurch vielleicht ne NPE.
-
23.07.09 14:55 #11
- Registriert seit
- Aug 2006
- Beiträge
- 23
Hi,
ich habs jetzt selbst rausgefunden, was der fehler war, trotzdem danke!
Es gab noch einen unterschied zwischen meinem Quelltext und dem vom Beispiel. Ich habe meine Tabelle nicht über contentprovider und labelprovider aufgebaut sondern über die Funktion: filltable(). Jetzt habe ich es entsprechend umgeschrieben und voilá es t.
Trotzdem nochmal danke!
MfG Jango
-
Schön schön

Das ist manchmal wirklich ne blöde Sucherei mit SWT/JFace.
Ähnliche Themen
-
Warum wirft Exception andere Exception?
Von Onkel Schuppig im Forum C/C++Antworten: 5Letzter Beitrag: 01.03.10, 13:45 -
Unerklärliche Systemanstürze
Von Benzol im Forum HardwareAntworten: 8Letzter Beitrag: 10.11.05, 19:26 -
Unerklärliche Programmabstürze...
Von Alexanderz im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 25.08.05, 13:25 -
Unerklärliche Schatten
Von branko im Forum Cinema 4DAntworten: 5Letzter Beitrag: 24.01.05, 15:55 -
Unerklärliche Abstürze
Von DerAndere im Forum Microsoft WindowsAntworten: 5Letzter Beitrag: 29.08.03, 00:03





Zitieren

Login





