tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
1062
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    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 Jango
    Geändert von Jango Qel Droma (23.07.09 um 10:31 Uhr)
     

  2. #2
    Tobias 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.
     

  3. #3
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    23
    Hi,

    ja, sry, hab ne zeile vergessen, die steht drin, die exception kommt trotzdem.

    MfG Jango
    Geändert von Jango Qel Droma (23.07.09 um 10:31 Uhr)
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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.
     

  5. #5
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    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
     

  6. #6
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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?
     

  7. #7
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    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
     

  8. #8
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Kannst du noch mehr von deinem Code posten? An dem ViewerFilter selber liegts wohl nicht. Irgendwas muss an dem TableViewer nicht richtig sein.
     

  9. #9
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    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
     

  10. #10
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    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.
     

  11. #11
    Jango Qel Droma Jango Qel Droma ist offline Mitglied
    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
     

  12. #12
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Schön schön

    Das ist manchmal wirklich ne blöde Sucherei mit SWT/JFace.
     

Ähnliche Themen

  1. Warum wirft Exception andere Exception?
    Von Onkel Schuppig im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 01.03.10, 13:45
  2. Unerklärliche Systemanstürze
    Von Benzol im Forum Hardware
    Antworten: 8
    Letzter Beitrag: 10.11.05, 19:26
  3. Unerklärliche Programmabstürze...
    Von Alexanderz im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 25.08.05, 13:25
  4. Unerklärliche Schatten
    Von branko im Forum Cinema 4D
    Antworten: 5
    Letzter Beitrag: 24.01.05, 15:55
  5. Unerklärliche Abstürze
    Von DerAndere im Forum Microsoft Windows
    Antworten: 5
    Letzter Beitrag: 29.08.03, 00:03

Stichworte