Ejemplo n.º 1
0
    /** @see Composite#Composite(Composite, int) */
    public InstanceSelectorControl(Composite parent, int style) {
      super(parent, style);

      refreshImage =
          DataViewPlugin.getImageDescriptor("icons/refresh.gif").createImage(); // $NON-NLS-1$

      GridLayout layout = new GridLayout((spaceID == null) ? (4) : (3), false);
      layout.marginHeight = 2;
      layout.marginWidth = 3;
      setLayout(layout);

      // schema type selector
      if (spaceID == null) {
        schemaSpaces = new ComboViewer(this, SWT.READ_ONLY);
        schemaSpaces.setLabelProvider(
            new LabelProvider() {

              @Override
              public String getText(Object element) {
                if (element instanceof SchemaSpaceID) {
                  switch ((SchemaSpaceID) element) {
                    case SOURCE:
                      return Messages.InstanceServiceFeatureSelector_SourceReturnText;
                    case TARGET:
                      return Messages.InstanceServiceFeatureSelector_TargetReturnText;
                    default:
                      return Messages.InstanceServiceFeatureSelector_defaultReturnText;
                  }
                } else {
                  return super.getText(element);
                }
              }
            });
        schemaSpaces.setContentProvider(ArrayContentProvider.getInstance());
        schemaSpaces.setInput(new Object[] {SchemaSpaceID.SOURCE, SchemaSpaceID.TARGET});
        schemaSpaces.setSelection(new StructuredSelection(SchemaSpaceID.SOURCE));
      } else {
        schemaSpaces = null;
      }

      // feature type selector
      typeDefinitions = new ComboViewer(this, SWT.READ_ONLY);
      typeDefinitions.setContentProvider(ArrayContentProvider.getInstance());
      typeDefinitions.setComparator(new DefinitionComparator());
      typeDefinitions.setLabelProvider(new DefinitionLabelProvider(null));
      typeDefinitions.addSelectionChangedListener(
          new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
              updateSelection();
            }
          });

      // filter field
      filterField =
          new CQLFilterField(
              (selectedType == null) ? (null) : (selectedType), this, SWT.NONE, spaceID);
      filterField.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
      filterField.addListener(
          new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
              if (evt.getPropertyName().equals(TypeFilterField.PROPERTY_FILTER)) {
                updateSelection();
              }
            }
          });

      // refresh button
      /*
       * XXX disabled for now - Button refresh = new Button(this,
       * SWT.PUSH); refresh.setImage(refreshImage);
       * refresh.setToolTipText("Refresh"); refresh.setLayoutData(new
       * GridData(SWT.CENTER, SWT.CENTER, false, false));
       * refresh.addSelectionListener(new SelectionAdapter() {
       *
       * @Override public void widgetSelected(SelectionEvent e) {
       * updateSelection(); }
       *
       * });
       */

      // max count selector
      count = new ComboViewer(this, SWT.READ_ONLY);
      count.setContentProvider(ArrayContentProvider.getInstance());
      count.setInput(
          new Integer[] {
            Integer.valueOf(1),
            Integer.valueOf(2),
            Integer.valueOf(3),
            Integer.valueOf(4),
            Integer.valueOf(5)
          });
      count.setSelection(new StructuredSelection(Integer.valueOf(2)));
      count.addSelectionChangedListener(
          new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
              updateSelection();
            }
          });

      updateTypesSelection();

      if (schemaSpaces != null) {
        schemaSpaces.addSelectionChangedListener(
            new ISelectionChangedListener() {

              @Override
              public void selectionChanged(SelectionChangedEvent event) {
                updateTypesSelection();
              }
            });
      }

      // service listeners
      SchemaService ss = PlatformUI.getWorkbench().getService(SchemaService.class);
      ss.addSchemaServiceListener(
          schemaListener =
              new SchemaServiceListener() {

                @Override
                public void schemaAdded(SchemaSpaceID spaceID, Schema schema) {
                  final Display display = PlatformUI.getWorkbench().getDisplay();
                  display.syncExec(
                      new Runnable() {

                        @Override
                        public void run() {
                          updateTypesSelection();
                        }
                      });
                }

                @Override
                public void schemasCleared(SchemaSpaceID spaceID) {
                  final Display display = PlatformUI.getWorkbench().getDisplay();
                  display.syncExec(
                      new Runnable() {

                        @Override
                        public void run() {
                          updateTypesSelection();
                        }
                      });
                }

                @Override
                public void mappableTypesChanged(
                    SchemaSpaceID spaceID, Collection<? extends TypeDefinition> types) {
                  final Display display = PlatformUI.getWorkbench().getDisplay();
                  display.syncExec(
                      new Runnable() {

                        @Override
                        public void run() {
                          updateTypesSelection();
                        }
                      });
                }
              });

      InstanceService is = PlatformUI.getWorkbench().getService(InstanceService.class);
      is.addListener(
          instanceListener =
              new InstanceServiceAdapter() {

                @Override
                public void datasetChanged(DataSet dataSet) {
                  final Display display = PlatformUI.getWorkbench().getDisplay();
                  display.syncExec(
                      new Runnable() {

                        @Override
                        public void run() {
                          updateTypesSelection();
                        }
                      });
                }
              });
    }