presentation for comparison modes

This commit is contained in:
Konstantin Bulenkov
2011-05-13 11:31:21 +04:00
parent 4ec18504b1
commit 54cf22bee0
3 changed files with 36 additions and 10 deletions

View File

@@ -55,6 +55,10 @@ public class DirDiffSettings {
public static enum CompareMode {
CONTENT, // the most honest, the slowest. Compares size, if equal compares contents. Ignores timestamps
SIZE, // Compares size only
TIMESTAMP // Compares size, if equal compares timestamps
TIMESTAMP; // Compares size, if equal compares timestamps
public String getPresentableName() {
return StringUtil.capitalize(name().toLowerCase());
}
}
}

View File

@@ -19,7 +19,6 @@ import com.intellij.ide.diff.DirDiffSettings;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.Icons;
import com.intellij.util.ui.EmptyIcon;
@@ -37,7 +36,7 @@ class ChangeCompareModeAction extends AnAction {
private final DirDiffSettings.CompareMode myMode;
ChangeCompareModeAction(DirDiffTableModel model, DirDiffSettings.CompareMode mode) {
super(StringUtil.capitalize(mode.name().toLowerCase()));
super(mode.getPresentableName());
myModel = model;
myMode = mode;
}

View File

@@ -16,12 +16,16 @@
package com.intellij.openapi.diff.impl.dir.actions;
import com.intellij.ide.diff.DirDiffSettings;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.actionSystem.ex.ComboBoxAction;
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
import com.intellij.ui.IdeBorderFactory;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
/**
@@ -29,20 +33,39 @@ import java.util.ArrayList;
*/
public class ChangeCompareModeGroup extends ComboBoxAction {
private final DefaultActionGroup myGroup;
private DirDiffSettings mySettings;
public ChangeCompareModeGroup(DirDiffTableModel model) {
getTemplatePresentation().setText("Compare by");
mySettings = model.getSettings();
getTemplatePresentation().setText(mySettings.compareMode.getPresentableName());
final ArrayList<ChangeCompareModeAction> actions = new ArrayList<ChangeCompareModeAction>();
if (model.getSettings().showCompareModes) {
final ArrayList<ChangeCompareModeAction> actions = new ArrayList<ChangeCompareModeAction>();
for (DirDiffSettings.CompareMode mode : DirDiffSettings.CompareMode.values()) {
actions.add(new ChangeCompareModeAction(model, mode));
}
myGroup = new DefaultActionGroup(actions.toArray(new ChangeCompareModeAction[actions.size()]));
} else {
getTemplatePresentation().setEnabled(false);
getTemplatePresentation().setVisible(false);
myGroup = new DefaultActionGroup();
}
else {
getTemplatePresentation().setVisible(false);
getTemplatePresentation().setEnabled(false);
}
myGroup = new DefaultActionGroup(actions.toArray(new ChangeCompareModeAction[actions.size()]));
}
@Override
public void update(AnActionEvent e) {
super.update(e);
getTemplatePresentation().setText(mySettings.compareMode.getPresentableName());
e.getPresentation().setText(mySettings.compareMode.getPresentableName());
}
@Override
public JComponent createCustomComponent(Presentation presentation) {
JPanel panel = new JPanel(new BorderLayout());
final JLabel label = new JLabel("Compare by:");
panel.add(label, BorderLayout.WEST);
panel.add(super.createCustomComponent(presentation).getComponent(0), BorderLayout.CENTER);
panel.setBorder(IdeBorderFactory.createEmptyBorder(2, 6, 2, 0));
return panel;
}
@NotNull