Example usage for com.intellij.openapi.ui ComboBoxTableRenderer ComboBoxTableRenderer

List of usage examples for com.intellij.openapi.ui ComboBoxTableRenderer ComboBoxTableRenderer

Introduction

In this page you can find the example usage for com.intellij.openapi.ui ComboBoxTableRenderer ComboBoxTableRenderer.

Prototype

public ComboBoxTableRenderer(final T[] values) 

Source Link

Usage

From source file:com.android.tools.idea.gradle.structure.editors.ModuleDependenciesPanel.java

License:Apache License

public ModuleDependenciesPanel(@NotNull Project project, @NotNull String modulePath) {
    super(new BorderLayout());

    myModulePath = modulePath;/*from ww  w .j  a v  a 2 s  .  c o m*/
    myProject = project;
    myModel = new ModuleDependenciesTableModel();
    myGradleSettingsFile = GradleSettingsFile.get(myProject);

    Module module = GradleUtil.findModuleByGradlePath(myProject, modulePath);
    myGradleBuildFile = module != null ? GradleBuildFile.get(module) : null;
    if (myGradleBuildFile != null) {
        List<BuildFileStatement> dependencies = myGradleBuildFile.getDependencies();
        for (BuildFileStatement dependency : dependencies) {
            myModel.addItem(new ModuleDependenciesTableItem(dependency));
        }
    } else {
        LOG.warn("Unable to find Gradle build file for module " + myModulePath);
    }
    myModel.resetModified();

    myEntryTable = new JBTable(myModel);
    TableRowSorter<ModuleDependenciesTableModel> sorter = new TableRowSorter<>(myModel);
    sorter.setRowFilter(myModel.getFilter());
    myEntryTable.setRowSorter(sorter);
    myEntryTable.setShowGrid(false);
    myEntryTable.setDragEnabled(false);
    myEntryTable.setIntercellSpacing(new Dimension(0, 0));

    myEntryTable.setDefaultRenderer(ModuleDependenciesTableItem.class, new TableItemRenderer());

    if (myGradleBuildFile == null) {
        return;
    }
    final boolean isAndroid = myGradleBuildFile.hasAndroidPlugin();
    List<Dependency.Scope> scopes = Lists.newArrayList(Sets.filter(EnumSet.allOf(Dependency.Scope.class),
            input -> isAndroid ? input.isAndroidScope() : input.isJavaScope()));
    ComboBoxModel<Dependency.Scope> boxModel = new CollectionComboBoxModel<>(scopes, null);
    JComboBox<Dependency.Scope> scopeEditor = new ComboBox<>(boxModel);
    myEntryTable.setDefaultEditor(Dependency.Scope.class, new DefaultCellEditor(scopeEditor));
    myEntryTable.setDefaultRenderer(Dependency.Scope.class,
            new ComboBoxTableRenderer<Dependency.Scope>(Dependency.Scope.values()) {
                @Override
                protected String getTextFor(@NotNull final Dependency.Scope value) {
                    return value.getDisplayName();
                }
            });

    myEntryTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    new SpeedSearchBase<JBTable>(myEntryTable) {
        @Override
        public int getSelectedIndex() {
            return myEntryTable.getSelectedRow();
        }

        @Override
        protected int convertIndexToModel(int viewIndex) {
            return myEntryTable.convertRowIndexToModel(viewIndex);
        }

        @Override
        @NotNull
        public Object[] getAllElements() {
            return myModel.getItems().toArray();
        }

        @Override
        @NotNull
        public String getElementText(Object element) {
            return getCellAppearance((ModuleDependenciesTableItem) element).getText();
        }

        @Override
        public void selectElement(@NotNull Object element, @NotNull String selectedText) {
            final int count = myModel.getRowCount();
            for (int row = 0; row < count; row++) {
                if (element.equals(myModel.getItemAt(row))) {
                    final int viewRow = myEntryTable.convertRowIndexToView(row);
                    myEntryTable.getSelectionModel().setSelectionInterval(viewRow, viewRow);
                    TableUtil.scrollSelectionToVisible(myEntryTable);
                    break;
                }
            }
        }
    };

    TableColumn column = myEntryTable.getTableHeader().getColumnModel()
            .getColumn(ModuleDependenciesTableModel.SCOPE_COLUMN);
    column.setResizable(false);
    column.setMaxWidth(SCOPE_COLUMN_WIDTH);
    column.setMinWidth(SCOPE_COLUMN_WIDTH);

    add(createTableWithButtons(), BorderLayout.CENTER);

    if (myEntryTable.getRowCount() > 0) {
        myEntryTable.getSelectionModel().setSelectionInterval(0, 0);
    }

    DefaultActionGroup actionGroup = new DefaultActionGroup();
    actionGroup.add(myRemoveButton);
    PopupHandler.installPopupHandler(myEntryTable, actionGroup, ActionPlaces.UNKNOWN,
            ActionManager.getInstance());
}

From source file:com.android.tools.idea.structure.gradle.ModuleDependenciesPanel.java

License:Apache License

public ModuleDependenciesPanel(@NotNull Project project, @NotNull String modulePath) {
    super(new BorderLayout());

    myModulePath = modulePath;/*from   ww w. java 2  s. co m*/
    myProject = project;
    myModel = new ModuleDependenciesTableModel();
    myGradleSettingsFile = GradleSettingsFile.get(myProject);

    Module module = GradleUtil.findModuleByGradlePath(myProject, modulePath);
    myGradleBuildFile = module != null ? GradleBuildFile.get(module) : null;
    if (myGradleBuildFile != null) {
        List<BuildFileStatement> dependencies = myGradleBuildFile.getDependencies();
        for (BuildFileStatement dependency : dependencies) {
            myModel.addItem(new ModuleDependenciesTableItem(dependency));
        }
    } else {
        LOG.warn("Unable to find Gradle build file for module " + myModulePath);
    }
    myModel.resetModified();

    myEntryTable = new JBTable(myModel);
    TableRowSorter<ModuleDependenciesTableModel> sorter = new TableRowSorter<ModuleDependenciesTableModel>(
            myModel);
    sorter.setRowFilter(myModel.getFilter());
    myEntryTable.setRowSorter(sorter);
    myEntryTable.setShowGrid(false);
    myEntryTable.setDragEnabled(false);
    myEntryTable.setIntercellSpacing(new Dimension(0, 0));

    myEntryTable.setDefaultRenderer(ModuleDependenciesTableItem.class, new TableItemRenderer());

    if (myGradleBuildFile == null) {
        return;
    }
    final boolean isAndroid = myGradleBuildFile.hasAndroidPlugin();
    List<Dependency.Scope> scopes = Lists
            .newArrayList(Sets.filter(EnumSet.allOf(Dependency.Scope.class), new Predicate<Dependency.Scope>() {
                @Override
                public boolean apply(Dependency.Scope input) {
                    return isAndroid ? input.isAndroidScope() : input.isJavaScope();
                }
            }));
    ComboBoxModel boxModel = new CollectionComboBoxModel(scopes, null);
    JComboBox scopeEditor = new ComboBox(boxModel);
    myEntryTable.setDefaultEditor(Dependency.Scope.class, new DefaultCellEditor(scopeEditor));
    myEntryTable.setDefaultRenderer(Dependency.Scope.class,
            new ComboBoxTableRenderer<Dependency.Scope>(Dependency.Scope.values()) {
                @Override
                protected String getTextFor(@NotNull final Dependency.Scope value) {
                    return value.getDisplayName();
                }
            });

    myEntryTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    new SpeedSearchBase<JBTable>(myEntryTable) {
        @Override
        public int getSelectedIndex() {
            return myEntryTable.getSelectedRow();
        }

        @Override
        protected int convertIndexToModel(int viewIndex) {
            return myEntryTable.convertRowIndexToModel(viewIndex);
        }

        @Override
        @NotNull
        public Object[] getAllElements() {
            return myModel.getItems().toArray();
        }

        @Override
        @NotNull
        public String getElementText(Object element) {
            return getCellAppearance((ModuleDependenciesTableItem) element).getText();
        }

        @Override
        public void selectElement(@NotNull Object element, @NotNull String selectedText) {
            final int count = myModel.getRowCount();
            for (int row = 0; row < count; row++) {
                if (element.equals(myModel.getItemAt(row))) {
                    final int viewRow = myEntryTable.convertRowIndexToView(row);
                    myEntryTable.getSelectionModel().setSelectionInterval(viewRow, viewRow);
                    TableUtil.scrollSelectionToVisible(myEntryTable);
                    break;
                }
            }
        }
    };

    TableColumn column = myEntryTable.getTableHeader().getColumnModel()
            .getColumn(ModuleDependenciesTableModel.SCOPE_COLUMN);
    column.setResizable(false);
    column.setMaxWidth(SCOPE_COLUMN_WIDTH);
    column.setMinWidth(SCOPE_COLUMN_WIDTH);

    add(createTableWithButtons(), BorderLayout.CENTER);

    if (myEntryTable.getRowCount() > 0) {
        myEntryTable.getSelectionModel().setSelectionInterval(0, 0);
    }

    DefaultActionGroup actionGroup = new DefaultActionGroup();
    actionGroup.add(myRemoveButton);
    PopupHandler.installPopupHandler(myEntryTable, actionGroup, ActionPlaces.UNKNOWN,
            ActionManager.getInstance());
}

From source file:com.mac.hazewinkel.plist.editor.impl.PListEditor.java

License:Apache License

public PListEditor(byte[] bytes, PListFormat storageFormat, Project project) {
    loadPList(bytes, storageFormat);/*from w ww.  ja  v a  2s. c o m*/
    treeTableModel = new PListJXTreeTableModel(plist, project);
    plistTree = new MyJXTreeTable(treeTableModel);
    plistTree.setClosedIcon(null);
    plistTree.setOpenIcon(null);
    plistTree.setLeafIcon(null);
    plistTree.setColumnSelectionAllowed(true);
    plistTree.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    plistTree.getColumn(1).setMaxWidth(100);
    plistTree.getColumn(1).setMinWidth(100);
    plistTree.setSurrendersFocusOnKeystroke(true);
    plistTree.getTableHeader().setReorderingAllowed(false);
    plistTree.setSortable(false);

    plistTree.setDefaultRenderer(String[].class, new ComboBoxTableRenderer<String>(typeValues));
    plistTree.setDefaultEditor(String[].class, new StringComboBoxTableRenderer(typeValues));

    plistTree.setDefaultRenderer(String.class, new MyStringTableCellRenderer());
    plistTree.setDefaultEditor(String.class, new MyStringTableCellEditor(project, plistTree));

    mainComponent = ScrollPaneFactory.createScrollPane(plistTree);
    plistTree.setScrollView(mainComponent);
}

From source file:com.microsoft.intellij.forms.TableEntityForm.java

License:Open Source License

public TableEntityForm(Project project) {
    super(project, true);
    this.project = project;

    setModal(true);//from  ww  w  .  j a  v a 2  s  .  c  o m

    DefaultTableModel model = new DefaultTableModel() {

        @Override
        public boolean isCellEditable(int row, int col) {
            return (col != 0) && (row > 1 || (col == 3 && tableEntity == null));
        }
    };

    model.setColumnIdentifiers(new String[] { "", "Name", "Type", "Value", });

    propertiesTable.setModel(model);

    propertiesTable.getColumn("").setCellRenderer(new DeleteButtonRenderer());
    propertiesTable.getColumn("").setMaxWidth(30);
    propertiesTable.getColumn("").setMinWidth(30);
    propertiesTable.getColumn("Type").setMaxWidth(100);
    propertiesTable.getColumn("Type").setMinWidth(100);
    propertiesTable.getColumn("Type").setCellRenderer(
            new ComboBoxTableRenderer<TableEntity.PropertyType>(TableEntity.PropertyType.values()));
    propertiesTable.getColumn("Type").setCellEditor(new ComboBoxTableCellEditor());

    propertiesTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
    propertiesTable.getColumn("Value").setCellEditor(new DatePickerCellEditor() {
        @Override
        protected boolean isCellDate(JTable table, int row, int col) {
            return (table.getValueAt(row, 2) == TableEntity.PropertyType.DateTime);
        }
    });

    propertiesTable.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent mouseEvent) {
            int row = propertiesTable.rowAtPoint(mouseEvent.getPoint());
            int col = propertiesTable.columnAtPoint(mouseEvent.getPoint());
            if (col == 0 && row > 1) {
                ((DefaultTableModel) propertiesTable.getModel()).removeRow(row);
            }
        }
    });

    addPropertyButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            final DefaultTableModel model = (DefaultTableModel) propertiesTable.getModel();
            model.addRow(new Object[] { "", "", TableEntity.PropertyType.String, "" });
        }
    });

    init();
}

From source file:com.microsoft.intellij.forms.TablesQueryDesigner.java

License:Open Source License

public TablesQueryDesigner(Project project) {
    super(project, true);

    setModal(true);//ww w  .j  a  v a2 s .  c o m
    setTitle("Query Builder");

    DefaultTableModel model = new DefaultTableModel() {

        @Override
        public boolean isCellEditable(int row, int col) {
            return true;
        }
    };

    model.setColumnIdentifiers(new String[] { "", "And/Or", "Property Name", "Operation", "Value" });

    model.addTableModelListener(new TableModelListener() {
        @Override
        public void tableChanged(TableModelEvent tableModelEvent) {
            updateQueryText();
        }
    });

    queryTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    queryTable.setModel(model);

    queryTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

    JTableHeader tableHeader = queryTable.getTableHeader();
    tableHeader.setReorderingAllowed(false);
    tableHeader.setResizingAllowed(false);

    queryTable.getColumn("").setCellRenderer(new DeleteButtonRenderer());
    queryTable.getColumn("And/Or").setCellRenderer(new ComboBoxTableRenderer(LogicalOperator.values()));
    queryTable.getColumn("And/Or").setCellEditor(new ComboBoxTableCellEditor());
    queryTable.getColumn("Property Name").setCellRenderer(new ComboBoxTableRenderer(QueryField.values()));
    queryTable.getColumn("Property Name").setCellEditor(new ComboBoxTableCellEditor());
    queryTable.getColumn("Operation").setCellRenderer(new ComboBoxTableRenderer(Operator.values()));
    queryTable.getColumn("Operation").setCellEditor(new ComboBoxTableCellEditor());
    queryTable.getColumn("Value").setCellEditor(new DatePickerCellEditor() {
        @Override
        protected boolean isCellDate(JTable jTable, int row, int col) {
            return jTable.getValueAt(row, 2) == QueryField.Timestamp;
        }
    });

    queryTable.getColumn("").setPreferredWidth(30);
    queryTable.getColumn("And/Or").setPreferredWidth(30);
    queryTable.getColumn("Property Name").setPreferredWidth(100);

    addClauseButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            addClause();
        }
    });

    queryTable.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent mouseEvent) {
            int row = queryTable.rowAtPoint(mouseEvent.getPoint());
            int col = queryTable.columnAtPoint(mouseEvent.getPoint());
            if (col == 0) {
                ((DefaultTableModel) queryTable.getModel()).removeRow(row);
            }
        }
    });

    addClause();

    init();
}

From source file:com.perl5.lang.htmlmason.idea.configuration.HTMLMasonSettingsConfigurable.java

License:Apache License

protected void createCustomTagsComponent(FormBuilder builder) {
    myTagNameColumnInfo myTagNameColumnInfo = new myTagNameColumnInfo();
    customTagsModel = new ListTableModel<HTMLMasonCustomTag>(myTagNameColumnInfo, new myTagRoleColumInfo());

    myTagNameColumnInfo.setCustomTagsModel(customTagsModel);

    customTagsTable = new JBTable(customTagsModel);

    final TableColumn secondColumn = customTagsTable.getColumnModel().getColumn(1);

    ComboBoxTableRenderer<HTMLMasonCustomTagRole> roleComboBoxTableRenderer = new ComboBoxTableRenderer<HTMLMasonCustomTagRole>(
            HTMLMasonCustomTagRole.values()) {
        @Override/* www .j ava2 s.  com*/
        protected String getTextFor(@NotNull HTMLMasonCustomTagRole value) {
            return value.getTitle();
        }

        @Override
        public boolean isCellEditable(EventObject event) {
            if (event instanceof MouseEvent) {
                return ((MouseEvent) event).getClickCount() >= 1;
            }

            return true;
        }

    };
    secondColumn.setCellRenderer(roleComboBoxTableRenderer);
    secondColumn.setCellEditor(roleComboBoxTableRenderer);

    builder.addLabeledComponent(new JLabel("Custom tags that mimics built-in HTML::Mason tags:"),
            ToolbarDecorator.createDecorator(customTagsTable).setAddAction(new AnActionButtonRunnable() {
                @Override
                public void run(AnActionButton anActionButton) {
                    final TableCellEditor cellEditor = customTagsTable.getCellEditor();
                    if (cellEditor != null) {
                        cellEditor.stopCellEditing();
                    }
                    final TableModel model = customTagsTable.getModel();

                    int indexToEdit = -1;

                    for (HTMLMasonCustomTag entry : customTagsModel.getItems()) {
                        if (StringUtil.isEmpty(entry.getText())) {
                            indexToEdit = customTagsModel.indexOf(entry);
                            break;
                        }
                    }

                    if (indexToEdit == -1) {
                        customTagsModel.addRow(new HTMLMasonCustomTag(
                                "customTag" + customTagsModel.getItems().size(), HTMLMasonCustomTagRole.PERL));
                        indexToEdit = model.getRowCount() - 1;
                    }

                    TableUtil.editCellAt(customTagsTable, indexToEdit, 0);
                }
            }).disableDownAction().disableUpAction()
                    .setPreferredSize(JBUI.size(0, PerlConfigurationUtil.WIDGET_HEIGHT)).createPanel());
}

From source file:com.urswolfer.intellij.plugin.gerrit.ui.GerritSelectRevisionInfoColumn.java

License:Apache License

private ComboBoxTableRenderer<String> createComboBoxTableRenderer(final ChangeInfo changeInfo) {
    List<String> revisions = getRevisions(changeInfo);
    String[] array = new String[revisions.size()];
    return new ComboBoxTableRenderer<String>(revisions.toArray(array)) {
        @Override//from  ww w . jav  a2 s . co m
        public boolean isCellEditable(EventObject event) {
            if (!GerritSelectRevisionInfoColumn.this.isCellEditable(changeInfo)) {
                return false;
            }
            if (event instanceof MouseEvent) {
                return ((MouseEvent) event).getClickCount() >= 1;
            }
            return false;
        }
    };
}