2 * Copyright 2000-2009 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package com
.intellij
.ui
;
18 import com
.intellij
.openapi
.util
.Pair
;
19 import org
.jetbrains
.annotations
.NotNull
;
22 import java
.util
.ArrayList
;
23 import java
.util
.List
;
27 * This component represents a list of checkboxes.
29 public abstract class OptionalChooserComponent
implements CheckBoxListListener
{
30 private JPanel myContentPane
;
31 private CheckBoxList myList
;
32 private DefaultListModel myListModel
;
33 private List
<Pair
<String
, Boolean
>> myInitialList
;
34 private ArrayList
<Pair
<String
, Boolean
>> myWorkingList
;
36 public OptionalChooserComponent(@NotNull final List
<Pair
<String
, Boolean
>> list
) {
38 myWorkingList
= new ArrayList
<Pair
<String
, Boolean
>>(myInitialList
);
44 public JPanel
getContentPane() {
48 public void checkBoxSelectionChanged(int index
, boolean value
) {
49 final Pair
<String
, Boolean
> pair
= myWorkingList
.remove(index
);
50 myWorkingList
.add(index
, Pair
.create(pair
.first
, value
));
53 private void createUIComponents() {
54 myListModel
= new DefaultListModel();
55 myList
= new CheckBoxList(myListModel
, this);
59 myWorkingList
= new ArrayList
<Pair
<String
, Boolean
>>(myInitialList
);
63 public abstract JCheckBox
createCheckBox(final String path
, final boolean checked
);
65 public boolean isModified() {
66 return !myWorkingList
.equals(myInitialList
);
69 public ArrayList
<Pair
<String
, Boolean
>> getValue() {
74 myInitialList
.clear();
75 myInitialList
.addAll(myWorkingList
);
78 public void update() {
80 for (Pair
<String
, Boolean
> pair
: myWorkingList
) {
81 myListModel
.addElement(createCheckBox(pair
.first
, pair
.second
));