propsheet.java
来自「一个简单的visio程序。」· Java 代码 · 共 1,220 行 · 第 1/3 页
JAVA
1,220 行
package webide.views.prop;
import java.awt.Panel;
import java.awt.Frame;
import java.awt.Component;
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Vector;
import java.util.Hashtable;
import java.beans.BeanInfo;
import java.beans.PropertyEditor;
import java.beans.PropertyDescriptor;
import java.beans.PropertyEditorManager;
import webide.itools.Util;
import hc.util.MsgBox;
import Editor.*;
public class PropSheet extends Panel implements ItemListener
{
private webide.MainConsole console;
private webide.Wrapper wrapper;
private PropPanel proppanel;
private java.awt.Choice PChoice;
private Hashtable ItemWrapper = null;
private Hashtable hidePropTab = null;
PropertyDescriptor[] properties;
private PropertyEditor[] editors;
private Component[] views;
private Object bean = null;
private BeanInfo beaninfo = null;
private int CurrentValue = -1;
private int CaptionValue = -1;
public boolean canRefresh = false;
boolean changeTabindex = false;
private String space = " ";
private String ctrlname1 = null;
/**
*Constructor
*/
public PropSheet(webide.MainConsole console)
{
this.console = console;
setLayout(new BorderLayout(0,3));
PChoice = new java.awt.Choice();
add("North", PChoice);
PChoice.setFont(new java.awt.Font("Dialog",java.awt.Font.PLAIN,11));
PChoice.addItemListener(this);
proppanel = new webide.views.prop.PropPanel(this);
add("Center", proppanel);
}
/* ---------------------------------------------------------------------------------------- */
/* ------------------------------------ Private Method ------------------------------------ */
public java.awt.Dimension getPreferredSize()
{
return getMinimumSize();
}
public java.awt.Dimension getMinimumSize()
{
return new java.awt.Dimension(120,200);
}
public void LoadProp()
{
if(this.wrapper != null) refreshProp(this.wrapper);
this.wrapper = webide.MainConsole.getCurrentFocus();
refreshControl(this.wrapper);
proppanel.setWrapper(this.wrapper);
bean = this.wrapper.getBean();
beaninfo = this.wrapper.getBeanInfo();
properties = this.wrapper.getProp();
setProperty();
}
public void setProperty()
{
Hashtable proptable = new Hashtable(properties.length);
editors = new PropertyEditor[properties.length];
int x=0;
for (int i = 0; i < properties.length; i++)
{
Object value = null;
String name = properties[i].getDisplayName().toLowerCase();
Class type = properties[i].getPropertyType();
value = this.wrapper.getPropValue(i);
PropertyEditor editor = createEditor(i);
editors[i] = editor;
x++;
Object[] obj = new Object[4];
obj[0] = new Integer(i);
obj[1] = type;
obj[2] = editor;
obj[3] = value;
proptable.put(name,obj);
}
proppanel.setHashtable(proptable);
if(proppanel.getViews() != null)
views = proppanel.getViews();
boolean currentvalue = false;
boolean captionvalue = false;
for (int i = 0; i < properties.length; i++)
{
String name = properties[i].getDisplayName().toLowerCase();
if(name.equalsIgnoreCase(proppanel.currentname))
{
CurrentValue = proppanel.getRow(i);
currentvalue = true;
}
if(name.equalsIgnoreCase("caption"))
{
CaptionValue = proppanel.getRow(i);
captionvalue = true;
}
}
if(currentvalue)
{
proppanel.CurrentValue = CurrentValue;
}
else if(captionvalue)
{
proppanel.CurrentValue = CaptionValue;
proppanel.currentname = "caption";
}
else
{
proppanel.CurrentValue = 0;
}
}
public void setProperty(String name, int value)
{
Object Value = new Integer(value);
this.proppanel.setProperty(name, Value);
}
public void refreshPropWindow()
{
PChoice.removeAll();
if (views != null)
removeComponent();
properties = null;
views = null;
editors = null;
}
public void refreshClear()
{
int count = PChoice.getItemCount();
for (int i = 0; i < count; i++)
{
String item = PChoice.getItem(i).toLowerCase();
}
for(java.util.Enumeration e = ItemWrapper.keys(); e.hasMoreElements();)
{
String Key = (String)e.nextElement();
String Name = ((webide.Wrapper)ItemWrapper.get(Key)).getName();
webide.Wrapper WRAP = (webide.Wrapper)ItemWrapper.get(Key);
}
PChoice.removeAll();
if(ItemWrapper.size() != 0 && ItemWrapper != null)
ItemWrapper.clear();
}
public void refreshAll(webide.Wrapper cF)
{
PChoice.setVisible(false);
PChoice.removeAll();
if(ItemWrapper.size() != 0 && ItemWrapper != null)
ItemWrapper.clear();
webide.form.PainterForm pf = cF.getFrame();
Vector nameVect = new Vector();
String putItem = getPutItem(pf);
String cFItem = null;
ItemWrapper.put(putItem, pf.topWrapper); //---
nameVect.addElement(putItem);
if (cF == pf.topWrapper)
{
cFItem = putItem;
}
if (pf.clist != null && pf.clist.size() > 0)
{
for (int i=0; i<pf.clist.size(); i++)
{
webide.Controlslist contrl = (webide.Controlslist)pf.clist.elementAt(i);
putItem = getPutItem(contrl);
ItemWrapper.put(putItem, contrl.wrap);
nameVect.addElement(putItem);
if (cF == contrl.wrap)
{
cFItem = putItem;
}
}
}
String[] items = getSortedItems(nameVect);
for (int i = 0; i < items.length; i++)
{
PChoice.addItem(items[i]);
}
if (cFItem != null)
{
PChoice.select(cFItem);
}
PChoice.setVisible(true);
}
public void refreshControl(webide.Wrapper wrap)
{
if(wrap == null || !isVisible()) return;
if(ItemWrapper == null)
{
ItemWrapper = new Hashtable();
refreshControl(wrap, true);
}
else
{
String wrapName = wrap.getName();
boolean Add = true;
for(java.util.Enumeration e = ItemWrapper.keys(); e.hasMoreElements();)
{
String Key = (String)e.nextElement();
String Name = ((webide.Wrapper)ItemWrapper.get(Key)).getName();
webide.Wrapper WRAP = (webide.Wrapper)ItemWrapper.get(Key);
if(WRAP == wrap)
{
Add = false;
String ItemString = getPutItem(wrap);
PChoice.select(ItemString);
break;
}
}
if(Add) refreshControl(wrap, Add);
}
}
public void refreshControl(webide.Wrapper wrap, boolean add)
{
if(wrap == null || !isVisible()){
return;
}
String ItemString = getPutItem(wrap);
if (add)
{
for(java.util.Enumeration e = ItemWrapper.keys(); e.hasMoreElements();)
{
String Key = (String)e.nextElement();
if(ItemString.equalsIgnoreCase(Key))
return;
}
ItemWrapper.put(ItemString,wrap);
int id = getInsetId(ItemString);
PChoice.insert(ItemString,id);
PChoice.select(ItemString);
}
else
{
try
{
ItemWrapper.remove(ItemString);
PChoice.remove(ItemString);
}catch (IllegalArgumentException e) {}
}
}
public void refreshProp(webide.Wrapper wrap)
{
if(views != null)
removeComponent();
}
private int getInsetId(String putItem)
{
int count = PChoice.getItemCount();
int ind = putItem.indexOf(space);
String name = putItem.substring(0,ind).toLowerCase();
for (int i = 0; i < count; i++)
{
String item = PChoice.getItem(i).toLowerCase();
if (name.compareTo(item) < 0)
return i;
}
return count;
}
private String[] getSortedItems(Vector nameVect)
{
String[] names = new String[nameVect.size()];
nameVect.copyInto(names);
int i;
for (int j = 0; j < names.length; j++)
{
i = j;
int ind1 = names[j].indexOf(' ');
String name1 = names[j].substring(0,ind1).toLowerCase();
for (int k = j+1; k < names.length; k++)
{
int ind2 = names[k].indexOf(' ');
String name2 = names[k].substring(0,ind2).toLowerCase();
if (name2.compareTo(name1) < 0)
{
name1 = name2;
i = k;
}
}
if (i != j)
{
String t = names[j];
names[j] = names[i];
names[i] = t;
}
}
return names;
} // end of getSortedItems.
private String getPutItem(webide.Wrapper wrap)
{
Object bean = wrap.getBean();
String objName = (String)wrap.getPropValue("name");
String putItem = null;
if (bean instanceof webide.form.PainterForm)
{
putItem = getPutItem((webide.form.PainterForm)bean);
}
else
{
Object ind = wrap.getPropValue("index");
String className = null;
webide.Controlslist control = wrap.getControl();
putItem = getPutItem(control);
}
return putItem;
}
private String getPutItem(webide.Controlslist control)
{
String putItem = null;
String className = null;
int PointIndex = control.className.indexOf(".");
if (PointIndex != -1)
className = control.className.substring(PointIndex+1);
else
className = control.className;
String objName = (String)control.prop.get("name");
Object ind = control.prop.get("index");
if (ind == null)
putItem = objName + space + className;
else
putItem = objName + "(" + ((Short)ind).shortValue()+ ")" + space + className;
return putItem;
}
private String getPutItem(webide.form.PainterForm pf)
{
return pf.getName() + space + "Form";
}
private void removeComponent()
{
views = proppanel.getViews();
for (int i = 0; i < views.length; i++)
{
Component view = views[i];
if(view != null && view.isVisible())
{
view.setVisible(false);
}
if (view != null) proppanel.remove(view);
}
}
private PropertyEditor createEditor(int i)
{
String name = properties[i].getDisplayName();
Class type = properties[i].getPropertyType();
float Ivalue = 0;
PropertyEditor editor = null;
Object value = this.wrapper.getPropValue(i);
try
{
Class pec = properties[i].getPropertyEditorClass();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?