be4db4d892a4d42eee024251aa2f4a9480387faa
[idea/community.git] / platform / lang-api / src / com / intellij / execution / util / EnvVariablesTable.java
1 /*
2  * Copyright 2000-2009 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
17 package com.intellij.execution.util;
18
19 import com.intellij.util.ui.ColumnInfo;
20 import com.intellij.util.ui.ListTableModel;
21 import org.jetbrains.annotations.Nullable;
22
23 import java.util.List;
24
25 public class EnvVariablesTable extends ListTableWithButtons<EnvironmentVariable> {
26   @Override
27   protected ListTableModel createListModel() {
28     final ColumnInfo name = new ElementsColumnInfoBase<EnvironmentVariable>("Name") {
29       @Override
30       public String valueOf(EnvironmentVariable environmentVariable) {
31         return environmentVariable.getName();
32       }
33
34       @Override
35       public boolean isCellEditable(EnvironmentVariable environmentVariable) {
36         return environmentVariable.getNameIsWriteable();
37       }
38
39       @Override
40       public void setValue(EnvironmentVariable environmentVariable, String s) {
41         if (s.equals(valueOf(environmentVariable))) {
42           return;
43         }
44         environmentVariable.setName(s);
45         setModified();
46       }
47
48       @Override
49       protected String getDescription(EnvironmentVariable environmentVariable) {
50         return environmentVariable.getDescription();
51       }
52     };
53
54     final ColumnInfo value = new ElementsColumnInfoBase<EnvironmentVariable>("Value") {
55       @Override
56       public String valueOf(EnvironmentVariable environmentVariable) {
57         return environmentVariable.getValue();
58       }
59
60       @Override
61       public boolean isCellEditable(EnvironmentVariable environmentVariable) {
62         return !environmentVariable.getIsPredefined();
63       }
64
65       @Override
66       public void setValue(EnvironmentVariable environmentVariable, String s) {
67         if (s.equals(valueOf(environmentVariable))) {
68           return;
69         }
70         environmentVariable.setValue(s);
71         setModified();
72       }
73
74       @Nullable
75       @Override
76       protected String getDescription(EnvironmentVariable environmentVariable) {
77         return environmentVariable.getDescription();
78       }
79     };
80
81     return new ListTableModel((new ColumnInfo[]{name, value}));
82   }
83
84
85   public List<EnvironmentVariable> getEnvironmentVariables() {
86     return getElements();
87   }
88
89   @Override
90   protected EnvironmentVariable createElement() {
91     return new EnvironmentVariable("", "", false);
92   }
93
94   @Override
95   protected EnvironmentVariable cloneElement(EnvironmentVariable envVariable) {
96     return envVariable.clone();
97   }
98
99   @Override
100   protected boolean canDeleteElement(EnvironmentVariable selection) {
101     return !selection.getIsPredefined();
102   }
103 }