diff: remove code duplication
[idea/community.git] / platform / platform-impl / src / com / intellij / openapi / diff / actions / IgnoreWhiteSpacesAction.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.diff.actions;
17
18 import com.intellij.openapi.diff.DiffBundle;
19 import com.intellij.openapi.diff.ex.DiffPanelEx;
20 import com.intellij.openapi.diff.impl.ComparisonPolicy;
21 import org.jetbrains.annotations.NotNull;
22
23 public class IgnoreWhiteSpacesAction extends DiffPanelComboBoxAction<ComparisonPolicy> {
24   private static final ComparisonPolicy[] ourActionOrder = new ComparisonPolicy[]{
25     ComparisonPolicy.DEFAULT,
26     ComparisonPolicy.TRIM_SPACE,
27     ComparisonPolicy.IGNORE_SPACE
28   };
29
30   public IgnoreWhiteSpacesAction() {
31     super(ourActionOrder);
32     addAction(ComparisonPolicy.DEFAULT, new IgnoringPolicyAction(DiffBundle.message("diff.acton.ignore.whitespace.policy.do.not.ignore"), ComparisonPolicy.DEFAULT));
33     addAction(ComparisonPolicy.TRIM_SPACE, new IgnoringPolicyAction(DiffBundle.message("diff.acton.ignore.whitespace.policy.leading.and.trailing"), ComparisonPolicy.TRIM_SPACE));
34     addAction(ComparisonPolicy.IGNORE_SPACE, new IgnoringPolicyAction(DiffBundle.message("diff.acton.ignore.whitespace.policy.all"), ComparisonPolicy.IGNORE_SPACE));
35   }
36
37   @NotNull
38   @Override
39   protected String getActionName() {
40     return DiffBundle.message("ignore.whitespace.acton.name");
41   }
42
43   @NotNull
44   @Override
45   protected ComparisonPolicy getCurrentOption(@NotNull DiffPanelEx diffPanel) {
46     return diffPanel.getComparisonPolicy();
47   }
48
49   private static class IgnoringPolicyAction extends DiffPanelAction {
50     private final ComparisonPolicy myPolicy;
51
52     public IgnoringPolicyAction(String text, ComparisonPolicy policy) {
53       super(text);
54       myPolicy = policy;
55     }
56
57     @Override
58     protected void perform(@NotNull DiffPanelEx diffPanel) {
59       diffPanel.setComparisonPolicy(myPolicy);
60     }
61   }
62 }