+ label.setText(Messages.FilterViewer_TypeLabel);
+
+ final List<TraceTypeItem> traceTypeList = getTraceTypeList(fAspectNode);
+
+ fTraceTypeCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ fTraceTypeCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ for (TraceTypeItem traceType : traceTypeList) {
+ fTraceTypeCombo.add(traceType.label);
+ }
+ if (fAspectNode.getTraceTypeId() == null) {
+ fTraceTypeCombo.select(0);
+ fAspectNode.setTraceTypeId(traceTypeList.get(0).traceTypeId);
+ } else {
+ for (int i = 0; i < traceTypeList.size(); i++) {
+ TraceTypeItem traceType = traceTypeList.get(i);
+ if (fAspectNode.getTraceTypeId().equals(traceType.traceTypeId)) {
+ fTraceTypeCombo.select(i);
+ break;
+ }
+ }
+ }
+ fTraceTypeCombo.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ TraceTypeItem traceType = traceTypeList.get(fTraceTypeCombo.getSelectionIndex());
+ fAspectNode.setTraceTypeId(traceType.traceTypeId);
+ fAspectList = getAspectList(fAspectNode.getTraceTypeId());
+ String text = fAspectCombo.getText();
+ fAspectCombo.removeAll();
+ for (AspectItem aspect : fAspectList) {
+ fAspectCombo.add(aspect.label);
+ }
+ int index = Arrays.asList(fAspectCombo.getItems()).indexOf(text);
+ if (index >= 0 && !text.isEmpty()) {
+ fAspectCombo.select(index);
+ }
+ fViewer.refresh(fAspectNode);
+ }
+ });
+
+ label = new Label(this, SWT.NONE);
+ label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));