Example usage for com.intellij.openapi.actionSystem IdeActions ACTION_REFRESH

List of usage examples for com.intellij.openapi.actionSystem IdeActions ACTION_REFRESH

Introduction

In this page you can find the example usage for com.intellij.openapi.actionSystem IdeActions ACTION_REFRESH.

Prototype

String ACTION_REFRESH

To view the source code for com.intellij.openapi.actionSystem IdeActions ACTION_REFRESH.

Click Source Link

Usage

From source file:com.hp.alm.ali.idea.ui.entity.table.EntityTable.java

License:Apache License

public EntityTable(final Project project, final String entityType, boolean autoload, EntityQuery filter,
        final Set<String> hiddenFields, EntityQueryProcessor processor, final boolean useFavorites,
        final Entity masterEntity) {
    super(new BorderLayout());

    this.masterEntity = masterEntity;
    translateService = project.getComponent(TranslateService.class);

    table = new JBTable();
    table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.setAutoCreateColumnsFromModel(false);
    table.setAutoCreateRowSorter(false);
    final MyRowSorter rowSorter = new MyRowSorter();
    table.setRowSorter(rowSorter);/*from   w  ww .j  a  va  2s.  c o  m*/
    model = new EntityTableModel(project, table.getColumnModel(), autoload, entityType, filter, rowSorter,
            hiddenFields, processor);
    statusPanel = new EntityStatusPanel(project);
    model.setStatusIndicator(statusPanel);
    Disposer.register(project, model); // TODO: validate
    // setting table model clears the sorter, ignore this event not to lose visual indication
    rowSorter.setIgnore(true);
    table.setModel(model);
    rowSorter.setIgnore(false);
    final TableFilterHeader header = new TableFilterHeader(table, new DummyParserModel());
    /**
     * turn instant filtering off, because:
     *  a) it works nice on auto-completion field (e.g. assigned to) when item is auto-completed (whole item goes to the filter)
     *  b) it doesn't work if field has auto-completion but multiple choices still exist (only value entered so far is sent to the filter)
     *  c) it doesn't work for non-completed fields (e.g. defect summary)
     *
     * to make this work would require some kind of voodoo with the trailing wildcard that would however either changed the semantics
     * of the filter or brought corner-cases when switching from instant to final filter. moreover instant filtering would
     * most likely require some kind of delaying mechanism (configurable?) to prevent search on the very first character entered.
     * last but not least, instant filtering puts more stress on the server...
     */
    header.setInstantFiltering(false);
    FilterObserver observer = new FilterObserver(project, new Context(model.getFilter()), model.getFields());
    header.addHeaderObserver(observer);
    observer.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            model.fireFilterChangedEvent();
            model.reload();
        }
    });
    header.setAutoChoices(AutoChoices.DISABLED);

    model.addTableModelListener(new TableModelListener() {
        @Override
        public void tableChanged(final TableModelEvent e) {
            /**
             * FilterObserver callbacks are (sometimes) not invoked when columns are added into the model during initial load (why?).
             * Listen on the table-structure-changed event and force the header reload.
             */
            if (e.getFirstRow() == TableModelEvent.HEADER_ROW && e.getLastRow() == TableModelEvent.HEADER_ROW
                    && e.getColumn() == TableModelEvent.ALL_COLUMNS && e.getType() == TableModelEvent.UPDATE) {
                header.setTable(null);
                header.setTable(table);
                model.removeTableModelListener(this);
            }
        }
    });
    header.setTable(null);
    header.setTable(table);

    model.addTableModelListener(new TableModelListener() {
        @Override
        public void tableChanged(final TableModelEvent e) {
            /**
             * Auto-scroll to inserted values.
             */
            if (e.getType() == TableModelEvent.INSERT) {
                // make sure that table processes the event first
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        int viewRow = table.convertRowIndexToView(e.getFirstRow());
                        scrollTo(viewRow);
                    }
                });
            }
        }
    });

    /**
     * turn adaptive choices off to avoid following exception (appears from time to time):
     *
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at net.coderazzi.filters.gui.AdaptiveChoicesHandler$AdaptiveChoicesSupport.include(AdaptiveChoicesHandler.java:491)
    at javax.swing.DefaultRowSorter.include(DefaultRowSorter.java:914)
     */
    header.setAdaptiveChoices(false);

    table.getTableHeader().addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent mouseEvent) {
            if (mouseEvent.isPopupTrigger()) {
                return;
            }
            int col = table
                    .convertColumnIndexToModel(table.getTableHeader().columnAtPoint(mouseEvent.getPoint()));
            Field field = model.getFields().get(col);
            if (field.isCanFilter() && !field.isNoSort()) {
                if ((mouseEvent.getModifiers() & MouseEvent.CTRL_MASK) == 0) {
                    // append sort
                    rowSorter.toggleSortOrder(col, true);
                } else {
                    // set sort
                    rowSorter.toggleSortOrder(col, false);
                }
            }
        }
    });

    table.addMouseListener(new PopupAdapter() {
        public void onPopup(MouseEvent e) {
            int row = table.rowAtPoint(e.getPoint());
            if (row < 0) {
                return;
            }
            ActionPopupMenu popup = ActionUtil.createEntityActionPopup("table");
            popup.getComponent().show(e.getComponent(), e.getX(), e.getY());
        }
    });
    final RowSorterProxy sorterProxy = new RowSorterProxy(model);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
    table.getColumnModel().addColumnModelListener(new ColumnModelProxy(model));
    table.getRowSorter().addRowSorterListener(sorterProxy);
    table.getTableHeader().addMouseListener(new PopupAdapter() {
        public void onPopup(MouseEvent e) {
            // workaround for http://bugs.sun.com/view_bug.do?bug_id=6586009
            table.getTableHeader().setDraggedColumn(null);
            ColumnHeaderPopup popup = new ColumnHeaderPopup(project, table, model, useFavorites);
            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    });
    final JBScrollPane scrollPane = new JBScrollPane(table);
    add(scrollPane, BorderLayout.CENTER);
    table.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseMoved(MouseEvent e) {
            NavigatingTranslator translator = getNavigationTranslator(e);
            if (translator != null) {
                int row = table.rowAtPoint(e.getPoint());
                Entity entity = model.getEntity(table.convertRowIndexToModel(row));
                HyperlinkListener listener = translator.getHyperlinkListener(entity);
                if (listener != null) {
                    int col = table.columnAtPoint(e.getPoint());
                    Rectangle cellRect = table.getCellRect(row, col, true);
                    String value = entity.getPropertyValue(
                            model.getFields().get(table.convertColumnIndexToModel(col)).getName());
                    Component component = table.getCellRenderer(row, col).getTableCellRendererComponent(table,
                            value, false, false, row, col);
                    Dimension dim = component.getPreferredSize();
                    if (dim.width < 20) {
                        // make it easier to click on very narrow values (e.g. 1)
                        dim.width = 20;
                    }
                    if (e.getPoint().x + dim.width > cellRect.x + cellRect.width) { // assume right alignment
                        table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                        // due to JBScrollPane bug/feature the cursor needs to be specified on the encapsulating pane too
                        scrollPane.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                        return;
                    }
                }
            }
            // seems not necessary if JBScrollPane is used
            table.setCursor(Cursor.getDefaultCursor());
        }
    });
    table.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if (!table.getCursor().equals(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR))) {
                return;
            }
            NavigatingTranslator translator = getNavigationTranslator(e);
            if (translator != null) {
                int row = table.rowAtPoint(e.getPoint());
                HyperlinkListener listener = translator
                        .getHyperlinkListener(model.getEntity(table.convertRowIndexToModel(row)));
                if (listener != null) {
                    listener.hyperlinkUpdate(
                            new HyperlinkEvent(table, HyperlinkEvent.EventType.ACTIVATED, null));
                }
            }
        }
    });
    table.setDefaultRenderer(Translator.class, new DefaultTableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, final int row, int column) {
            int col = table.convertColumnIndexToModel(column);
            Field field = model.getFields().get(col);
            final int modelRow = table.convertRowIndexToModel(row);
            Translator translator = model.getTranslator(field, modelRow, masterEntity);
            if (translator instanceof ContextAware || (value != null && !value.toString().isEmpty())) {
                value = translateService.translateAsync(translator, value == null ? "" : value.toString(),
                        false, new ValueCallback() {
                            @Override
                            public void value(String value) {
                                model.fireTableRowsUpdated(modelRow, modelRow);
                            }
                        });
            }
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            return this;
        }
    });

    // com.intellij.ide.actions.RefreshAction not provided in 10.5.x
    ShortcutSet shortcutSet = ActionManager.getInstance().getAction(IdeActions.ACTION_REFRESH).getShortcutSet();
    new AnAction() {
        public void actionPerformed(AnActionEvent e) {
            model.reload();
        }
    }.registerCustomShortcutSet(shortcutSet, table);

    entityQueryPanel = new EntityQueryPanel(project, model, entityType, hiddenFields, null, false, true, true,
            true);

    setBackground(Color.WHITE);
}

From source file:com.intellij.ide.actions.RefreshAction.java

License:Apache License

public void registerShortcutOn(JComponent component) {
    final ShortcutSet shortcutSet = ActionManager.getInstance().getAction(IdeActions.ACTION_REFRESH)
            .getShortcutSet();/*  ww w. ja v a  2s  .c  om*/
    registerCustomShortcutSet(shortcutSet, component);
}