예제 #1
0
  /**
   * Creates an area to filter types.
   *
   * @param parent area to create controls in
   */
  private void createTypeFilterArea(Composite parent) {
    createLabel(parent, TypeInfoMessages.TypeSelectionDialog_filterLabel);

    Composite upperRow = new Composite(parent, SWT.NONE);
    int columns = fKnownTypes.size() > 6 ? 4 : 3;
    GridLayout upperLayout = new GridLayout(columns, true);
    upperLayout.verticalSpacing = 2;
    upperLayout.marginHeight = 0;
    upperLayout.marginWidth = 0;
    upperRow.setLayout(upperLayout);

    // The 'for' loop is here to guarantee that we always create the checkboxes in the same order.
    for (int i = 0; i < ALL_TYPES.length; ++i) {
      Integer typeObject = new Integer(ALL_TYPES[i]);
      if (fKnownTypes.contains(typeObject)) createTypeCheckbox(upperRow, typeObject);
    }

    if (showLowLevelFilter()) {
      Composite lowerRow = new Composite(parent, SWT.NONE);
      GridLayout lowerLayout = new GridLayout(1, true);
      lowerLayout.verticalSpacing = 2;
      lowerLayout.marginHeight = 0;
      upperLayout.marginWidth = 0;
      lowerRow.setLayout(lowerLayout);

      Composite composite = new Composite(lowerRow, SWT.NONE);
      GridLayout layout = new GridLayout(2, false);
      layout.marginHeight = 0;
      layout.marginWidth = 0;
      composite.setLayout(layout);

      String name = TypeInfoMessages.TypeSelectionDialog_filterLowLevelTypes;
      Button checkbox = new Button(composite, SWT.CHECK);
      checkbox.setFont(composite.getFont());
      checkbox.setText(name);
      checkbox.setSelection(fFilterMatcher.getShowLowLevelTypes());
      checkbox.addSelectionListener(
          new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
              if (e.widget instanceof Button) {
                Button button = (Button) e.widget;
                fFilterMatcher.setShowLowLevelTypes(button.getSelection());
                updateElements();
              }
            }
          });
    }
  }
예제 #2
0
  /**
   * Initializes itself from the dialog settings with the same state as at the previous invocation.
   */
  protected void readSettings(IDialogSettings section) {
    try {
      int x = section.getInt(SETTINGS_X_POS);
      int y = section.getInt(SETTINGS_Y_POS);
      fLocation = new Point(x, y);
      int width = section.getInt(SETTINGS_WIDTH);
      int height = section.getInt(SETTINGS_HEIGHT);
      fSize = new Point(width, height);
    } catch (NumberFormatException e) {
      fLocation = null;
      fSize = null;
    }

    if (section.getBoolean(SETTINGS_SHOW_NAMESPACES)) {
      Integer typeObject = new Integer(ICElement.C_NAMESPACE);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_CLASSES)) {
      Integer typeObject = new Integer(ICElement.C_CLASS);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_STRUCTS)) {
      Integer typeObject = new Integer(ICElement.C_STRUCT);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_TYPEDEFS)) {
      Integer typeObject = new Integer(ICElement.C_TYPEDEF);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_ENUMS)) {
      Integer typeObject = new Integer(ICElement.C_ENUMERATION);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_UNIONS)) {
      Integer typeObject = new Integer(ICElement.C_UNION);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_FUNCTIONS)) {
      Integer typeObject = new Integer(ICElement.C_FUNCTION);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_VARIABLES)) {
      Integer typeObject = new Integer(ICElement.C_VARIABLE);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_ENUMERATORS)) {
      Integer typeObject = new Integer(ICElement.C_ENUMERATOR);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (section.getBoolean(SETTINGS_SHOW_MACROS)) {
      Integer typeObject = new Integer(ICElement.C_MACRO);
      if (fKnownTypes.contains(typeObject)) fFilterMatcher.getVisibleTypes().add(typeObject);
    }
    if (showLowLevelFilter()) {
      fFilterMatcher.setShowLowLevelTypes(section.getBoolean(SETTINGS_SHOW_LOWLEVEL));
    } else {
      fFilterMatcher.setShowLowLevelTypes(true);
    }
  }
예제 #3
0
  /** Stores current configuration in the dialog store. */
  protected void writeSettings(IDialogSettings section) {
    Point location = getShell().getLocation();
    section.put(SETTINGS_X_POS, location.x);
    section.put(SETTINGS_Y_POS, location.y);

    if (getTray() == null) {
      // only save size if help tray is not shown
      Point size = getShell().getSize();
      section.put(SETTINGS_WIDTH, size.x);
      section.put(SETTINGS_HEIGHT, size.y);
    }
    section.put(
        SETTINGS_SHOW_NAMESPACES,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_NAMESPACE)));
    section.put(
        SETTINGS_SHOW_CLASSES,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_CLASS)));
    section.put(
        SETTINGS_SHOW_STRUCTS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_STRUCT)));
    section.put(
        SETTINGS_SHOW_TYPEDEFS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_TYPEDEF)));
    section.put(
        SETTINGS_SHOW_ENUMS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_ENUMERATION)));
    section.put(
        SETTINGS_SHOW_UNIONS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_UNION)));
    section.put(
        SETTINGS_SHOW_FUNCTIONS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_FUNCTION)));
    section.put(
        SETTINGS_SHOW_VARIABLES,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_VARIABLE)));
    section.put(
        SETTINGS_SHOW_ENUMERATORS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_ENUMERATOR)));
    section.put(
        SETTINGS_SHOW_MACROS,
        fFilterMatcher.getVisibleTypes().contains(new Integer(ICElement.C_MACRO)));
    section.put(SETTINGS_SHOW_LOWLEVEL, fFilterMatcher.getShowLowLevelTypes());
  }
예제 #4
0
  /** Creates a type filter checkbox. */
  private void createTypeCheckbox(Composite parent, Integer typeObject) {
    String name;
    int type = typeObject.intValue();
    switch (type) {
      case ICElement.C_NAMESPACE:
        name = TypeInfoMessages.TypeSelectionDialog_filterNamespaces;
        break;
      case ICElement.C_CLASS:
        name = TypeInfoMessages.TypeSelectionDialog_filterClasses;
        break;
      case ICElement.C_STRUCT:
        name = TypeInfoMessages.TypeSelectionDialog_filterStructs;
        break;
      case ICElement.C_TYPEDEF:
        name = TypeInfoMessages.TypeSelectionDialog_filterTypedefs;
        break;
      case ICElement.C_ENUMERATION:
        name = TypeInfoMessages.TypeSelectionDialog_filterEnums;
        break;
      case ICElement.C_UNION:
        name = TypeInfoMessages.TypeSelectionDialog_filterUnions;
        break;
      case ICElement.C_FUNCTION:
        name = TypeInfoMessages.TypeSelectionDialog_filterFunctions;
        break;
      case ICElement.C_VARIABLE:
        name = TypeInfoMessages.TypeSelectionDialog_filterVariables;
        break;
      case ICElement.C_ENUMERATOR:
        name = TypeInfoMessages.TypeSelectionDialog_filterEnumerators;
        break;
      case ICElement.C_MACRO:
        name = TypeInfoMessages.TypeSelectionDialog_filterMacros;
        break;
      default:
        return;
    }
    Image icon = TypeInfoLabelProvider.getTypeIcon(type);

    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout(2, false);
    layout.marginHeight = 0;
    composite.setLayout(layout);

    final Integer fTypeObject = typeObject;
    Button checkbox = new Button(composite, SWT.CHECK);
    checkbox.setFont(composite.getFont());
    checkbox.setImage(icon);
    checkbox.setSelection(fFilterMatcher.getVisibleTypes().contains(fTypeObject));
    checkbox.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            if (e.widget instanceof Button) {
              Button checkbox = (Button) e.widget;
              if (checkbox.getSelection()) fFilterMatcher.getVisibleTypes().add(fTypeObject);
              else fFilterMatcher.getVisibleTypes().remove(fTypeObject);
              updateElements();
            }
          }
        });
    checkbox.setText(name);
  }