fixed testAutoRendererConfigurable - pt.2
[idea/community.git] / java / debugger / impl / src / com / intellij / debugger / ui / tree / render / BasicRendererProperties.java
1 /*
2  * Copyright 2000-2015 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.debugger.ui.tree.render;
17
18 import com.intellij.openapi.diagnostic.Logger;
19 import com.intellij.openapi.util.InvalidDataException;
20 import com.intellij.openapi.util.JDOMExternalizable;
21 import com.intellij.openapi.util.WriteExternalException;
22 import org.jdom.Element;
23 import org.jetbrains.annotations.NonNls;
24
25 /**
26  * @author Eugene Zhuravlev
27  *         Date: Feb 12, 2005
28  */
29 public final class BasicRendererProperties implements Cloneable, JDOMExternalizable{
30   // todo: add class filters here
31   private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.tree.render.BasicRendererProperties");
32
33   private static final @NonNls String NAME_OPTION = "NAME";
34   private String myName;
35
36   private static final @NonNls String ENABLED_OPTION = "ENABLED";
37   private boolean myEnabled;
38
39   private static final @NonNls String CLASSNAME_OPTION = "QUALIFIED_NAME";
40   private String myClassName;
41
42   private static final @NonNls String SHOWTYPE_OPTION = "SHOW_TYPE";
43   private boolean myShowType = true;
44
45   public String getName() {
46     return myName;
47   }
48
49   public void setName(final String name) {
50     myName = name;
51   }
52
53   public boolean isEnabled() {
54     return myEnabled;
55   }
56
57   public void setEnabled(final boolean enabled) {
58     myEnabled = enabled;
59   }
60
61   public String getClassName() {
62     return myClassName;
63   }
64
65   public void setClassName(final String className) {
66     myClassName = className;
67   }
68
69   public boolean isShowType() {
70     return myShowType;
71   }
72
73   public void setShowType(boolean showType) {
74     myShowType = showType;
75   }
76
77   @SuppressWarnings({"HardCodedStringLiteral"}) public void readExternal(Element element) throws InvalidDataException {
78     myName = null;
79     myClassName = null;
80     for (Element option : element.getChildren("option")) {
81       final String optionName = option.getAttributeValue("name");
82       if (NAME_OPTION.equals(optionName)) {
83         myName = option.getAttributeValue("value");
84       }
85       else if (ENABLED_OPTION.equals(optionName)) {
86         // default is false
87         myEnabled = Boolean.parseBoolean(option.getAttributeValue("value"));
88       }
89       else if (CLASSNAME_OPTION.equals(optionName)) {
90         myClassName = option.getAttributeValue("value");
91       }
92       else if (SHOWTYPE_OPTION.equals(optionName)) {
93         // default is true
94         myShowType = !"false".equalsIgnoreCase(option.getAttributeValue("value"));
95       }
96     }
97   }
98
99   @SuppressWarnings({"HardCodedStringLiteral"}) public void writeExternal(Element element) throws WriteExternalException {
100     if (myName != null) {
101       addOption(element, NAME_OPTION, myName);
102     }
103     if (myEnabled) {
104       // default is false
105       //noinspection ConstantConditions
106       addOption(element, ENABLED_OPTION, Boolean.toString(myEnabled));
107     }
108     if (myClassName != null) {
109       addOption(element, CLASSNAME_OPTION, myClassName);
110     }
111     if (!myShowType) {
112       // default is true
113       //noinspection ConstantConditions
114       addOption(element, SHOWTYPE_OPTION, Boolean.toString(myShowType));
115     }
116   }
117
118   @SuppressWarnings({"HardCodedStringLiteral"})
119   private void addOption(final Element element, final String optionName, final String optionValue) {
120     final Element option = new Element("option");
121     element.addContent(option);
122     option.setAttribute("name", optionName);
123     option.setAttribute("value", optionValue);
124   }
125
126   public BasicRendererProperties clone()  {
127     try {
128       return (BasicRendererProperties)super.clone();
129     }
130     catch (CloneNotSupportedException e) {
131       LOG.error(e);
132     }
133     return null;
134   }
135 }