📄 jremcommanddoc.java
字号:
/* * JRemCntl - Copyright (C) 2007 Filippo Di Vattimo <fildiv@gmail.com> * See COPYING */package fildiv.jremcntl.server.gui.model;import java.util.ArrayList;import java.util.Collection;import fildiv.jremcntl.common.core.Command;import fildiv.jremcntl.common.core.ConfigIntegrityInfo;import fildiv.jremcntl.common.core.Context;import fildiv.jremcntl.common.core.Extension;import fildiv.jremcntl.common.core.JRemMobileKeys;import fildiv.jremcntl.common.core.SupportExtension;import fildiv.jremcntl.common.util.JRemUtils;import fildiv.jremcntl.server.core.JRemProperties;import fildiv.jremcntl.server.core.JRemPropertyDomainValue;import fildiv.jremcntl.server.core.JRemPropertyManager;import fildiv.jremcntl.server.gui.core.AbstractDocument;import fildiv.jremcntl.server.gui.core.DocumentEvent;import fildiv.jremcntl.server.gui.core.DocumentListener;import fildiv.jremcntl.server.gui.core.DocumentModifiedEvent;import fildiv.jremcntl.server.utils.JRemServerUtils;public class JRemCommandDoc extends AbstractDocument implements Command, JRemPropertyManager { public static final int MODIFIED_CONTENT_TYPE_CHILDREN_MOD = 1; private Context context; protected int id; private String exePath = ""; private String desc = ""; private String key = ""; private String question = ""; private JRemExtensionDoc extDoc = null; private DocumentListener listener; public JRemCommandDoc(String desc, String exePath, String key) { this(null, 0, desc, exePath, key, "", true); } public JRemCommandDoc(Context context, int id, String desc, String exePath, String key, String question) { this(context, id, desc, exePath, key, question, true); } protected JRemCommandDoc(Context context, int id, String desc, String exePath, String key, String question, boolean setModified) { this.context = context; this.id = id; this.desc = desc; this.exePath = exePath; this.key = key; this.question = question; setModified(setModified); listener = new DocumentListener() { public void actionPerformed(DocumentEvent event) { JRemCommandDoc.this.actionPerformed(event); } }; } public Context getContext() { return context; } public String getDesc() { return desc; } public void setDesc(String desc) { if (checkModified(this.desc, desc)) { this.desc = desc; setModified(true); fireGenericModifyEvent(); } } public String getExePath() { return exePath; } public void setExePath(String exePath) { if (checkModified(this.exePath, exePath)) { this.exePath = exePath; setModified(true); fireGenericModifyEvent(); } } public void setQuestion(String question) { if (checkModified(this.question, question)) { this.question = question; setModified(true); fireGenericModifyEvent(); } } public int getID() { return id; } public String getKey() { return key; } public void setKey(String key) { if (checkModified(this.key, key)) { this.key = key; setModified(true); fireGenericModifyEvent(); } } public String toString() { return !JRemUtils.isEmptyString(key) ? "(" + key + ") " + desc : desc; } public boolean equals(Object obj) { if (obj == null) return false; if (!(obj instanceof JRemCommandDoc)) return false; JRemCommandDoc ctx = (JRemCommandDoc) obj; return id == ctx.getID(); } public int hashCode() { return id; } protected void setContext(JRemContextDoc context) { this.context = context; } public String getName() { return id + " " + desc; } public String getBaseDir() { return JRemServerUtils.getBasePath(this); } public String getQuestion() { return question; } protected void setModified(boolean modified) { super.setModified(modified); } public boolean isPropertyEditable(String name) { if (JRemProperties.PROP_BASE_DIR.equalsIgnoreCase(name) || JRemProperties.PROP_QUESTION.equalsIgnoreCase(name)) return true; return isManageProperty(name); } public boolean isPropertyEnabled(String name) { if (JRemProperties.PROP_DEF_VIEW.equalsIgnoreCase(name)) return false; return isManageProperty(name); } public Object getPropertyValue(String name) { if (JRemProperties.PROP_ID.equalsIgnoreCase(name)) return String.valueOf(id); if (JRemProperties.PROP_DESCRIPTION.equalsIgnoreCase(name)) return desc; if (JRemProperties.PROP_MOBILE_KEY.equalsIgnoreCase(name)) return key; if (JRemProperties.PROP_EXE_PATH.equalsIgnoreCase(name)) return exePath; if (JRemProperties.PROP_BASE_DIR.equalsIgnoreCase(name)) return getBaseDir(); if (JRemProperties.PROP_QUESTION.equalsIgnoreCase(name)) return getQuestion(); if (JRemProperties.PROP_DEF_VIEW.equalsIgnoreCase(name)) return new Short(context.getDefView()); return null; } public void setPropertyValue(String name, Object value) { if (JRemProperties.PROP_DESCRIPTION.equalsIgnoreCase(name)) setDesc( (String) value); else if (JRemProperties.PROP_MOBILE_KEY.equalsIgnoreCase(name)) setKey( (String) value); else if (JRemProperties.PROP_EXE_PATH.equalsIgnoreCase(name)) setExePath( (String) value); else if (JRemProperties.PROP_QUESTION.equalsIgnoreCase(name)) { setQuestion( (String) value); }else if (JRemProperties.PROP_DEF_VIEW.equalsIgnoreCase(name)) throw new UnsupportedOperationException("set non supported"); } public boolean isManageProperty(String name) { return JRemProperties.PROP_ID.equalsIgnoreCase(name) || JRemProperties.PROP_DESCRIPTION.equalsIgnoreCase(name) || JRemProperties.PROP_MOBILE_KEY.equalsIgnoreCase(name) || JRemProperties.PROP_EXE_PATH.equalsIgnoreCase(name) || JRemProperties.PROP_QUESTION.equalsIgnoreCase(name) || JRemProperties.PROP_DEF_VIEW.equalsIgnoreCase(name); } public Collection getPropertyDomainValues(String name) { Collection c = new ArrayList(); if (name.equals(JRemProperties.PROP_MOBILE_KEY)) { c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_NONE, "<none>")); // number keys c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_0, "0")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_1, "1")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_2, "2")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_3, "3")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_4, "4")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_5, "5")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_6, "6")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_7, "7")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_8, "8")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_9, "9")); // special keys c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_P, "#")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_S, "*")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_UP, "<up>")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_DOWN, "<down>")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_LEFT, "<left>")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_RIGHT, "<right>")); c.add(new JRemPropertyDomainValue(JRemMobileKeys.KEY_FIRE, "<fire>")); } else if (name.equals(JRemProperties.PROP_DEF_VIEW)) { JRemContextDoc context = (JRemContextDoc) this.context; c = context.getPropertyDomainValues(name); } return c; } public ConfigIntegrityInfo checkValid() { if (JRemUtils.isEmptyString(desc)) return ConfigIntegrityInfo.newInvalidIntegrity( this, "\"Description\" cannot be empty."); if (JRemUtils.isEmptyString(exePath)) return ConfigIntegrityInfo.newInvalidIntegrity( this, "\"Command Path\" cannot be empty."); if (extDoc != null) { ConfigIntegrityInfo cii = extDoc.checkValid(); if (cii != ConfigIntegrityInfo.CONFIG_INTEGRIY_VALID) return ConfigIntegrityInfo.newInvalidIntegrity(this, cii.getReason()); } return ConfigIntegrityInfo.CONFIG_INTEGRIY_VALID; } public void resetState() { super.resetState(); if (extDoc != null) extDoc.resetState(); } protected void attachExtensionDoc(JRemExtensionDoc extDoc) { if (this.extDoc != null) this.extDoc.removeActionListener(listener); this.extDoc = extDoc; if (extDoc != null) extDoc.addActionListener(listener); } public void setExtension(Extension be) { attachExtensionDoc( (JRemExtensionDoc) be); setModified(true); fireGenericModifyEvent(); } public boolean isInHerited() { return extDoc == null; } public SupportExtension getParent() { return context; } public Extension getExtension(boolean parentRecursion) { if (extDoc == null && parentRecursion) return getContext().getExtension(parentRecursion); return extDoc; } protected void actionPerformed(DocumentEvent event) { if (!(event instanceof DocumentModifiedEvent)) return; fireModifyEvent(event, MODIFIED_CONTENT_TYPE_CHILDREN_MOD); } public boolean isModified() { if (super.isModified()) return true; if (extDoc != null && extDoc.isModified()) return true; return false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -