/** * 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(); } } }); } }
/** * 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); } }
/** 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()); }
/** 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); }