blob: fa902324c8396da40a543219140dd839d88a6c0d [file] [log] [blame]
/*
* 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();
}
}