package jdepend.client.ui.framework;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import jdepend.framework.context.JDependContext;
import jdepend.framework.domain.PersistentBean;
import jdepend.framework.log.LogUtil;
import jdepend.framework.ui.config.UIProperty;
/**
* UI相关的配置信息和操作信息
*
* @author user
*
*/
public class UIPropertyConfigurator extends PersistentBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5460667730699202795L;
private transient Properties properties;
public transient static final String DEFAULT_PROPERTY_DIR = "conf";
public transient static final String DEFAULT_PROPERTY_FILE = "ui.properties";
public transient final static String GroupTabLayoutPolicy_WRAP_TAB_LAYOUT = "WRAP_TAB_LAYOUT";
public transient final static String GroupTabLayoutPolicy_SCROLL_TAB_LAYOUT = "SCROLL_TAB_LAYOUT";
public transient final static String defaultAnalyzerType = "关注";
public transient final static int defaultMaxRelation = -1;
private transient final static int defaultTextFontSize = 14;
private Map<String, UIOperationData> UIOperationDatas;
private transient static UIPropertyConfigurator inst = null;
public static UIPropertyConfigurator getInstance() {
if (inst == null) {
inst = new UIPropertyConfigurator("UI配置信息", "UI配置信息", DEFAULT_PROPERTY_DIR);
}
return inst;
}
private void loadProperties() {
this.properties = loadProperties(getDefaultPropertyFile());
}
public UIPropertyConfigurator() {
this.loadProperties();
}
public UIPropertyConfigurator(String string, String string2, String defaultPropertyDir) {
super(string, string2, defaultPropertyDir);
this.loadProperties();
if (this.UIOperationDatas == null) {
this.UIOperationDatas = new HashMap<String, UIOperationData>();
}
if (this.UIOperationDatas.size() == 0) {
UIOperationData data = new UIOperationData();
this.UIOperationDatas.put(JDependContext.getWorkspacePath(), data);
}
}
public String getGroupTabLayoutPolicy() {
String key = "groupTabLayoutPolicy";
if (properties.containsKey(key)) {
return properties.getProperty(key);
}
return GroupTabLayoutPolicy_WRAP_TAB_LAYOUT;
}
public String getDefaultAnalyzerType() {
String key = "defaultAnalyzerType";
if (properties.containsKey(key)) {
return properties.getProperty(key);
}
return defaultAnalyzerType;
}
public int getMaxRelations() {
String key = "maxRelations";
if (properties.containsKey(key)) {
return Integer.parseInt(properties.getProperty(key));
}
return defaultMaxRelation;
}
public int getPopupSummary() {
String key = "popupSummary";
if (properties.containsKey(key)) {
return Integer.parseInt(properties.getProperty(key));
}
return 0;
}
public int getTextFontSize() {
String key = "TextFontSize";
if (properties.containsKey(key)) {
return Integer.parseInt(properties.getProperty(key));
}
return defaultTextFontSize;
}
public boolean isVisibleCircle() {
String key = "isVisibleCircle";
if (properties.containsKey(key)) {
return Boolean.parseBoolean(properties.getProperty(key));
}
return false;
}
public void setDefaultTab(int one, int two) throws IOException {
this.obtainUIOperationData().setDefaultTabOneIndex(one);
this.obtainUIOperationData().setDefaultTabTwoIndex(two);
}
public Integer obtainGroupIndex() {
return this.obtainUIOperationData().getGroupIndex();
}
public void setGroupIndex(Integer groupIndex) {
this.obtainUIOperationData().setGroupIndex(groupIndex);
}
private UIOperationData obtainUIOperationData() {
UIOperationData data = this.UIOperationDatas.get(JDependContext.getWorkspacePath());
if (data == null) {
data = new UIOperationData();
this.UIOperationDatas.put(JDependContext.getWorkspacePath(), data);
}
return data;
}
public Map<String, UIOperationData> getUIOperationDatas() {
return UIOperationDatas;
}
public void setUIOperationDatas(Map<String, UIOperationData> uIOperationDatas) {
UIOperationDatas = uIOperationDatas;
}
public static File getDefaultPropertyFile() {
String home = JDependContext.getWorkspacePath() + "/" + UIPropertyConfigurator.DEFAULT_PROPERTY_DIR;
return new File(home, DEFAULT_PROPERTY_FILE);
}
public static Properties loadProperties(File file) {
Properties p = new Properties();
InputStream is = null;
try {
is = new FileInputStream(file);
} catch (Exception e) {
is = UIPropertyConfigurator.class.getResourceAsStream("/" + DEFAULT_PROPERTY_FILE);
if (is == null) {
is = UIPropertyConfigurator.class.getResourceAsStream(DEFAULT_PROPERTY_FILE);
}
}
try {
if (is != null) {
InputStreamReader in = new InputStreamReader(is, "UTF-8");
p.load(in);
} else {
LogUtil.getInstance(UIPropertyConfigurator.class).systemError("没有读取到ui.properties配置文件。");
}
} catch (IOException ignore) {
ignore.printStackTrace();
LogUtil.getInstance(UIPropertyConfigurator.class).systemError("读取ui.properties配置文件出错。");
} finally {
try {
if (is != null) {
is.close();
}
} catch (IOException ignore) {
}
}
return p;
}
public int obtainDefaultTabOneIndex() {
return this.obtainUIOperationData().getDefaultTabOneIndex();
}
public void setDefaultTabOneIndex(int defaultTabOneIndex) {
this.obtainUIOperationData().setDefaultTabOneIndex(defaultTabOneIndex);
}
public int obtainDefaultTabTwoIndex() {
return this.obtainUIOperationData().getDefaultTabTwoIndex();
}
public void setDefaultTabTwoIndex(int defaultTabTwoIndex) {
this.obtainUIOperationData().setDefaultTabTwoIndex(defaultTabTwoIndex);
}
public void refresh() {
this.loadProperties();
// 设置字体大小
UIProperty.setSize(this.getTextFontSize());
}
}