/* * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.openapi.vcs.changes.committed; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.*; import javax.swing.*; /** * @author yole */ public class SelectFilteringAction extends LabeledComboBoxAction { private final Project myProject; private final CommittedChangesTreeBrowser myBrowser; private CommittedChangesFilterKey myPreviousSelection; public SelectFilteringAction(final Project project, final CommittedChangesTreeBrowser browser) { super(VcsBundle.message("committed.changes.filter.title")); myProject = project; myBrowser = browser; myPreviousSelection = null; } protected ComboBoxModel createModel() { final DefaultComboBoxModel model = new DefaultComboBoxModel(new Object[]{ ChangeListFilteringStrategy.NONE, /*new ColumnFilteringStrategy(ChangeListColumn.NAME, provider.getClass()),*/ new StructureFilteringStrategy(myProject) }); final AbstractVcs[] vcss = ProjectLevelVcsManager.getInstance(myProject).getAllActiveVcss(); boolean addNameFilter = false; for(AbstractVcs vcs: vcss) { final CommittedChangesProvider provider = vcs.getCommittedChangesProvider(); if (provider != null) { addNameFilter = true; for(ChangeListColumn column: provider.getColumns()) { if (ChangeListColumn.isCustom(column)) { model.addElement(new ColumnFilteringStrategy(column, provider.getClass())); } } } } if (addNameFilter) { model.addElement(new ColumnFilteringStrategy(ChangeListColumn.NAME, CommittedChangesProvider.class)); } return model; } protected void selectionChanged(final Object selection) { if (selection == null) return; if (myPreviousSelection != null) { myBrowser.removeFilteringStrategy(myPreviousSelection); } final ChangeListFilteringStrategy strategy = (ChangeListFilteringStrategy)selection; if (!ChangeListFilteringStrategy.NONE.equals(selection)) { myBrowser.setFilteringStrategy(strategy); } myPreviousSelection = strategy.getKey(); } }