Search in sources :

Example 46 with DefaultTableModel

use of javax.swing.table.DefaultTableModel in project intellij-community by JetBrains.

the class FindPopupPanel method findSettingsChanged.

private void findSettingsChanged() {
    if (isShowing()) {
        ScrollingUtil.ensureSelectionExists(myResultsPreviewTable);
    }
    final ModalityState state = ModalityState.current();
    finishPreviousPreviewSearch();
    mySearchRescheduleOnCancellationsAlarm.cancelAllRequests();
    applyTo(myHelper.getModel(), false);
    myHelper.updateFindSettings();
    FindModel findInProjectModel = FindManager.getInstance(myProject).getFindInProjectModel();
    FindModel copy = new FindModel();
    copy.copyFrom(findInProjectModel);
    findInProjectModel.copyFrom(myHelper.getModel());
    //todo check if we really need to do it now
    ((FindManagerImpl) FindManager.getInstance(myProject)).changeGlobalSettings(myHelper.getModel());
    FindSettings findSettings = FindSettings.getInstance();
    myScopeUI.applyTo(findSettings, mySelectedScope);
    findSettings.setFileMask(myHelper.getModel().getFileFilter());
    ValidationInfo result = getValidationInfo(myHelper.getModel());
    final ProgressIndicatorBase progressIndicatorWhenSearchStarted = new ProgressIndicatorBase();
    myResultsPreviewSearchProgress = progressIndicatorWhenSearchStarted;
    final DefaultTableModel model = new DefaultTableModel() {

        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    model.addColumn("Usages");
    // Use previously shown usage files as hint for faster search and better usage preview performance if pattern length increased
    final LinkedHashSet<VirtualFile> filesToScanInitially = new LinkedHashSet<>();
    if (myHelper.myPreviousModel != null && myHelper.myPreviousModel.getStringToFind().length() < myHelper.getModel().getStringToFind().length()) {
        final DefaultTableModel previousModel = (DefaultTableModel) myResultsPreviewTable.getModel();
        for (int i = 0, len = previousModel.getRowCount(); i < len; ++i) {
            final UsageInfo2UsageAdapter usage = (UsageInfo2UsageAdapter) previousModel.getValueAt(i, 0);
            final VirtualFile file = usage.getFile();
            if (file != null)
                filesToScanInitially.add(file);
        }
    }
    myHelper.myPreviousModel = myHelper.getModel().clone();
    myCodePreviewComponent.setVisible(false);
    mySearchTextArea.setInfoText(null);
    myResultsPreviewTable.setModel(model);
    if (result != null) {
        myResultsPreviewTable.getEmptyText().setText(UIBundle.message("message.nothingToShow") + " (" + result.message + ")");
        return;
    }
    myResultsPreviewTable.getColumnModel().getColumn(0).setCellRenderer(new FindDialog.UsageTableCellRenderer(myCbFileFilter.isSelected(), false));
    myResultsPreviewTable.getEmptyText().setText("Searching...");
    final AtomicInteger resultsCount = new AtomicInteger();
    final AtomicInteger resultsFilesCount = new AtomicInteger();
    ProgressIndicatorUtils.scheduleWithWriteActionPriority(myResultsPreviewSearchProgress, new ReadTask() {

        @Override
        public void computeInReadAction(@NotNull ProgressIndicator indicator) {
            final UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(findSettings.isShowResultsInSeparateView(), /*findModel*/
            myHelper.getModel().clone());
            final boolean showPanelIfOnlyOneUsage = !findSettings.isSkipResultsWithOneUsage();
            final FindUsagesProcessPresentation processPresentation = FindInProjectUtil.setupProcessPresentation(myProject, showPanelIfOnlyOneUsage, presentation);
            Ref<VirtualFile> lastUsageFileRef = new Ref<>();
            FindInProjectUtil.findUsages(myHelper.getModel().clone(), myProject, info -> {
                final Usage usage = UsageInfo2UsageAdapter.CONVERTER.fun(info);
                usage.getPresentation().getIcon();
                VirtualFile file = lastUsageFileRef.get();
                VirtualFile usageFile = info.getVirtualFile();
                if (file == null || !file.equals(usageFile)) {
                    resultsFilesCount.incrementAndGet();
                    lastUsageFileRef.set(usageFile);
                }
                ApplicationManager.getApplication().invokeLater(() -> {
                    model.addRow(new Object[] { usage });
                    myCodePreviewComponent.setVisible(true);
                    if (model.getRowCount() == 1 && myResultsPreviewTable.getModel() == model) {
                        myResultsPreviewTable.setRowSelectionInterval(0, 0);
                    }
                }, state);
                return resultsCount.incrementAndGet() < ShowUsagesAction.USAGES_PAGE_SIZE;
            }, processPresentation, filesToScanInitially);
            boolean succeeded = !progressIndicatorWhenSearchStarted.isCanceled();
            if (succeeded) {
                ApplicationManager.getApplication().invokeLater(() -> {
                    if (progressIndicatorWhenSearchStarted == myResultsPreviewSearchProgress && !myResultsPreviewSearchProgress.isCanceled()) {
                        int occurrences = resultsCount.get();
                        int filesWithOccurrences = resultsFilesCount.get();
                        if (occurrences == 0)
                            myResultsPreviewTable.getEmptyText().setText(UIBundle.message("message.nothingToShow"));
                        myCodePreviewComponent.setVisible(occurrences > 0);
                        StringBuilder info = new StringBuilder();
                        if (occurrences > 0) {
                            info.append(Math.min(ShowUsagesAction.USAGES_PAGE_SIZE, occurrences));
                            boolean foundAllUsages = occurrences < ShowUsagesAction.USAGES_PAGE_SIZE;
                            if (!foundAllUsages) {
                                info.append("+");
                            }
                            info.append(UIBundle.message("message.matches", occurrences));
                            info.append(" in ");
                            info.append(filesWithOccurrences);
                            if (!foundAllUsages) {
                                info.append("+");
                            }
                            info.append(UIBundle.message("message.files", filesWithOccurrences));
                        }
                        mySearchTextArea.setInfoText(info.toString());
                    }
                }, state);
            }
        }

        @Override
        public void onCanceled(@NotNull ProgressIndicator indicator) {
            if (isShowing() && progressIndicatorWhenSearchStarted == myResultsPreviewSearchProgress) {
                scheduleResultsUpdate();
            }
        }
    });
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) UsageViewPresentation(com.intellij.usages.UsageViewPresentation) com.intellij.openapi.util(com.intellij.openapi.util) JBInsets(com.intellij.util.ui.JBInsets) UIUtil(com.intellij.util.ui.UIUtil) AllIcons(com.intellij.icons.AllIcons) ReadTask(com.intellij.openapi.progress.util.ReadTask) VirtualFile(com.intellij.openapi.vfs.VirtualFile) ModalityState(com.intellij.openapi.application.ModalityState) JBLabel(com.intellij.ui.components.JBLabel) SmartList(com.intellij.util.SmartList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) JBUI(com.intellij.util.ui.JBUI) Messages(com.intellij.openapi.ui.Messages) Logger(com.intellij.openapi.diagnostic.Logger) ListSelectionEvent(javax.swing.event.ListSelectionEvent) JBFont(com.intellij.util.ui.JBFont) ValidationInfo(com.intellij.openapi.ui.ValidationInfo) CustomComponentAction(com.intellij.openapi.actionSystem.ex.CustomComponentAction) ComponentPopupBuilder(com.intellij.openapi.ui.popup.ComponentPopupBuilder) PatternSyntaxException(java.util.regex.PatternSyntaxException) DefaultTableModel(javax.swing.table.DefaultTableModel) ActionButton(com.intellij.openapi.actionSystem.impl.ActionButton) WindowManager(com.intellij.openapi.wm.WindowManager) UsageViewPresentation(com.intellij.usages.UsageViewPresentation) KeymapUtil(com.intellij.openapi.keymap.KeymapUtil) com.intellij.ui(com.intellij.ui) JBScrollPane(com.intellij.ui.components.JBScrollPane) HelpManager(com.intellij.openapi.help.HelpManager) ListPopup(com.intellij.openapi.ui.popup.ListPopup) Nullable(org.jetbrains.annotations.Nullable) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) List(java.util.List) IdeFocusManager(com.intellij.openapi.wm.IdeFocusManager) JBPanel(com.intellij.ui.components.JBPanel) java.awt.event(java.awt.event) ApplicationManager(com.intellij.openapi.application.ApplicationManager) Registry(com.intellij.openapi.util.registry.Registry) Pattern(java.util.regex.Pattern) NotNull(org.jetbrains.annotations.NotNull) RelativePoint(com.intellij.ui.awt.RelativePoint) ProgressIndicatorBase(com.intellij.openapi.progress.util.ProgressIndicatorBase) java.util(java.util) ArrayUtil(com.intellij.util.ArrayUtil) ActionToolbarImpl(com.intellij.openapi.actionSystem.impl.ActionToolbarImpl) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) UsageInfo(com.intellij.usageView.UsageInfo) ProgressIndicatorUtils(com.intellij.openapi.progress.util.ProgressIndicatorUtils) ContainerUtil(com.intellij.util.containers.ContainerUtil) UsageInfo2UsageAdapter(com.intellij.usages.UsageInfo2UsageAdapter) ActionButtonWithText(com.intellij.openapi.actionSystem.impl.ActionButtonWithText) CommonBundle(com.intellij.CommonBundle) IdeFrameImpl(com.intellij.openapi.wm.impl.IdeFrameImpl) FindUsagesProcessPresentation(com.intellij.usages.FindUsagesProcessPresentation) UsagePreviewPanel(com.intellij.usages.impl.UsagePreviewPanel) Project(com.intellij.openapi.project.Project) DocumentEvent(javax.swing.event.DocumentEvent) VfsUtilCore(com.intellij.openapi.vfs.VfsUtilCore) Usage(com.intellij.usages.Usage) StringUtil(com.intellij.openapi.util.text.StringUtil) MigLayout(net.miginfocom.swing.MigLayout) com.intellij.find(com.intellij.find) UISettings(com.intellij.ide.ui.UISettings) OnePixelDivider(com.intellij.openapi.ui.OnePixelDivider) Disposable(com.intellij.openapi.Disposable) JBPopup(com.intellij.openapi.ui.popup.JBPopup) java.awt(java.awt) com.intellij.openapi.actionSystem(com.intellij.openapi.actionSystem) JBTable(com.intellij.ui.table.JBTable) DumbAwareAction(com.intellij.openapi.project.DumbAwareAction) JBPopupFactory(com.intellij.openapi.ui.popup.JBPopupFactory) ShowUsagesAction(com.intellij.find.actions.ShowUsagesAction) MnemonicHelper(com.intellij.openapi.MnemonicHelper) ListSelectionListener(javax.swing.event.ListSelectionListener) Alarm(com.intellij.util.Alarm) javax.swing(javax.swing) DefaultTableModel(javax.swing.table.DefaultTableModel) ProgressIndicatorBase(com.intellij.openapi.progress.util.ProgressIndicatorBase) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) Usage(com.intellij.usages.Usage) FindUsagesProcessPresentation(com.intellij.usages.FindUsagesProcessPresentation) RelativePoint(com.intellij.ui.awt.RelativePoint) ValidationInfo(com.intellij.openapi.ui.ValidationInfo) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) UsageInfo2UsageAdapter(com.intellij.usages.UsageInfo2UsageAdapter) ModalityState(com.intellij.openapi.application.ModalityState) ReadTask(com.intellij.openapi.progress.util.ReadTask)

Example 47 with DefaultTableModel

use of javax.swing.table.DefaultTableModel in project intellij-community by JetBrains.

the class ArrangementGroupingRulesControl method setRules.

public void setRules(@Nullable List<ArrangementGroupingRule> rules) {
    for (ArrangementGroupingComponent component : myComponents.values()) {
        component.setSelected(false);
    }
    if (rules == null) {
        return;
    }
    DefaultTableModel model = getModel();
    while (model.getRowCount() > 0) {
        model.removeRow(model.getRowCount() - 1);
    }
    final Set<ArrangementSettingsToken> groupingTokens = ContainerUtilRt.newHashSet(myComponents.keySet());
    for (ArrangementGroupingRule rule : rules) {
        final ArrangementSettingsToken groupingType = rule.getGroupingType();
        ArrangementGroupingComponent component = myComponents.get(groupingType);
        component.setSelected(true);
        component.setOrderType(rule.getOrderType());
        model.addRow(new Object[] { component });
        groupingTokens.remove(groupingType);
    }
    List<ArrangementSettingsToken> types = ContainerUtilRt.newArrayList(groupingTokens);
    types = mySettingsManager.sort(types);
    for (ArrangementSettingsToken type : types) {
        model.addRow(new Object[] { myComponents.get(type) });
    }
}
Also used : ArrangementGroupingRule(com.intellij.psi.codeStyle.arrangement.group.ArrangementGroupingRule) CompositeArrangementSettingsToken(com.intellij.psi.codeStyle.arrangement.std.CompositeArrangementSettingsToken) ArrangementSettingsToken(com.intellij.psi.codeStyle.arrangement.std.ArrangementSettingsToken) DefaultTableModel(javax.swing.table.DefaultTableModel)

Example 48 with DefaultTableModel

use of javax.swing.table.DefaultTableModel in project intellij-community by JetBrains.

the class MoveArrangementGroupingRuleDownAction method actionPerformed.

@Override
public void actionPerformed(AnActionEvent e) {
    ArrangementGroupingRulesControl control = ArrangementGroupingRulesControl.KEY.getData(e.getDataContext());
    if (control == null) {
        return;
    }
    int[] rows = control.getSelectedRows();
    int row = rows[0];
    if (rows.length != 1 || rows[0] == control.getRowCount() - 1) {
        return;
    }
    if (control.isEditing()) {
        control.getCellEditor().stopCellEditing();
    }
    DefaultTableModel model = control.getModel();
    Object value = model.getValueAt(row, 0);
    model.removeRow(row);
    model.insertRow(row + 1, new Object[] { value });
    control.getSelectionModel().setSelectionInterval(row + 1, row + 1);
}
Also used : ArrangementGroupingRulesControl(com.intellij.application.options.codeStyle.arrangement.group.ArrangementGroupingRulesControl) DefaultTableModel(javax.swing.table.DefaultTableModel)

Example 49 with DefaultTableModel

use of javax.swing.table.DefaultTableModel in project intellij-community by JetBrains.

the class MoveArrangementGroupingRuleUpAction method actionPerformed.

@Override
public void actionPerformed(AnActionEvent e) {
    ArrangementGroupingRulesControl control = ArrangementGroupingRulesControl.KEY.getData(e.getDataContext());
    if (control == null) {
        return;
    }
    int[] rows = control.getSelectedRows();
    int row = rows[0];
    if (rows.length != 1 || row == 0) {
        return;
    }
    if (control.isEditing()) {
        control.getCellEditor().stopCellEditing();
    }
    DefaultTableModel model = control.getModel();
    Object value = model.getValueAt(row, 0);
    model.removeRow(row);
    model.insertRow(row - 1, new Object[] { value });
    control.getSelectionModel().setSelectionInterval(row - 1, row - 1);
}
Also used : ArrangementGroupingRulesControl(com.intellij.application.options.codeStyle.arrangement.group.ArrangementGroupingRulesControl) DefaultTableModel(javax.swing.table.DefaultTableModel)

Example 50 with DefaultTableModel

use of javax.swing.table.DefaultTableModel in project processdash by dtuma.

the class ManuallyEnteredPreferencesList method createList.

@Override
protected void createList(String id, String currentValue) {
    Object[][] data = getCurrentData(currentValue);
    String settingColumnName = map.getResource(id + ".Setting_Column");
    String valueColumnName = map.getResource(id + ".Value_Column");
    Object[] columns = { settingColumnName, valueColumnName };
    tableModel = new DefaultTableModel(data, columns) {

        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    settingTable = new JTable(tableModel);
    settingTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    settingTable.getSelectionModel().addListSelectionListener(this);
    JScrollPane listScroller = new JScrollPane(settingTable);
    listScroller.setPreferredSize(new Dimension(LIST_WIDTH, LIST_HEIGHT));
    this.add(listScroller, BorderLayout.CENTER);
}
Also used : JScrollPane(javax.swing.JScrollPane) DefaultTableModel(javax.swing.table.DefaultTableModel) JTable(javax.swing.JTable) Dimension(java.awt.Dimension)

Aggregations

DefaultTableModel (javax.swing.table.DefaultTableModel)139 JTable (javax.swing.JTable)18 Dimension (java.awt.Dimension)14 Vector (java.util.Vector)14 JScrollPane (javax.swing.JScrollPane)14 TableColumn (javax.swing.table.TableColumn)12 JBTable (com.intellij.ui.table.JBTable)10 Point (java.awt.Point)10 ActionEvent (java.awt.event.ActionEvent)9 JPanel (javax.swing.JPanel)9 ListSelectionEvent (javax.swing.event.ListSelectionEvent)9 ListSelectionListener (javax.swing.event.ListSelectionListener)9 JButton (javax.swing.JButton)8 ActionListener (java.awt.event.ActionListener)7 WebAppDetails (com.microsoft.azuretools.utils.WebAppUtils.WebAppDetails)6 Color (java.awt.Color)6 ArrayList (java.util.ArrayList)6 AnActionEvent (com.intellij.openapi.actionSystem.AnActionEvent)5 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)5 VirtualFile (com.intellij.openapi.vfs.VirtualFile)5