📄 swtskin.java
字号:
}
tabset.addTab(skinObjectTab);
if (DEBUGLAYOUT) {
System.out.println("Tab " + sID + " added");
}
if (bLayoutComplete) {
attachControl(skinObjectTab);
}
return skinObjectTab;
}
private SWTSkinObject createTextLabel(SWTSkinProperties properties,
String sID, String sConfigID, String[] typeParams,
SWTSkinObject parentSkinObject) {
SWTSkinObject skinObject = new SWTSkinObjectText2(this, properties, sID,
sConfigID, typeParams, parentSkinObject);
addToControlMap(skinObject);
if (bLayoutComplete) {
attachControl(skinObject);
}
return skinObject;
}
public Shell getShell() {
return shell;
}
// private void createTextWidget(final String sConfigID) {
// SWTSkinObject parent = getParent(sConfigID);
// if (parent == null) {
// return;
// }
//
// SWTTextPaintListener listener = new SWTTextPaintListener(this, parent.getControl(),
// sConfigID);
// parent.getControl().addPaintListener(listener);
//
// //addToControlMap(listener, sConfigID);
//
// return;
// }
private String getAttachLine(FormAttachment attach) {
String s = "";
if (attach.control != null) {
s += attach.control.getData("ConfigID");
if (attach.offset != 0 || attach.alignment != SWT.DEFAULT) {
s += "," + attach.offset;
}
if (attach.alignment != SWT.DEFAULT) {
if (attach.alignment == SWT.LEFT) {
s += ",left";
} else if (attach.alignment == SWT.RIGHT) {
s += ",right";
} else if (attach.alignment == SWT.TOP) {
s += ",top";
} else if (attach.alignment == SWT.BOTTOM) {
s += ",bottom";
} else if (attach.alignment == SWT.CENTER) {
s += ",center";
}
}
} else {
s += (int) (100.0 * attach.numerator / attach.denominator) + ","
+ attach.offset;
}
return s;
}
protected Listener getHandCursorListener(Display display) {
if (handCursorListener == null) {
final Cursor handCursor = new Cursor(display, SWT.CURSOR_HAND);
handCursorListener = new Listener() {
public void handleEvent(Event event) {
if (event.type == SWT.MouseEnter) {
((Control) event.widget).setCursor(handCursor);
}
if (event.type == SWT.MouseExit) {
((Control) event.widget).setCursor(null);
}
}
};
}
return handCursorListener;
}
public SWTSkinObject createSkinObject(String sID, String sConfigID,
SWTSkinObject parentSkinObject) {
SWTSkinObject skinObject = linkIDtoParent(skinProperties, sID, sConfigID,
parentSkinObject, true, true);
if (bLayoutComplete) {
((Composite) skinObject.getControl()).getParent().layout(true);
}
return skinObject;
}
private SWTSkinObject linkIDtoParent(SWTSkinProperties properties,
String sID, String sConfigID, SWTSkinObject parentSkinObject,
boolean bForceCreate, boolean bAddView) {
SWTSkinObject skinObject = null;
try {
String[] sTypeParams = properties.getStringArray(sConfigID + ".type");
String sType;
if (sTypeParams != null && sTypeParams.length > 0) {
sType = sTypeParams[0];
bForceCreate = true;
} else {
// best guess
sType = null;
String sImageLoc = properties.getStringValue(sConfigID);
if (sImageLoc != null) {
sType = "image";
} else {
String sText = properties.getStringValue(sConfigID + ".text");
if (sText != null) {
sType = "text";
} else {
String sWidgets = properties.getStringValue(sConfigID + ".widgets");
if (sWidgets != null || bForceCreate) {
sType = "container";
}
}
}
if (sType == null) {
if (DEBUGLAYOUT) {
System.err.println("no type defined for " + sConfigID);
}
return null;
}
sTypeParams = new String[] { sType
};
}
if (sType.equals("image")) {
skinObject = createImageLabel(properties, sID, sConfigID, null,
sTypeParams, parentSkinObject);
} else if (sType.equals("image2")) {
skinObject = createImageLabel2(properties, sID, parentSkinObject);
} else if (sType.equals("container2")) {
skinObject = createContainer2(properties, sID, sConfigID,
parentSkinObject, bForceCreate, false, null);
} else if (sType.equals("container")) {
skinObject = createContainer(properties, sID, sConfigID,
parentSkinObject, bForceCreate, false, null);
} else if (sType.equals("text")) {
skinObject = createTextLabel(properties, sID, sConfigID, sTypeParams,
parentSkinObject);
} else if (sType.equals("tab")) {
skinObject = _createTab(properties, sID, sConfigID, parentSkinObject);
} else if (sType.equals("v-sash")) {
skinObject = createSash(properties, sID, sConfigID, parentSkinObject,
true);
} else if (sType.equals("h-sash")) {
skinObject = createSash(properties, sID, sConfigID, parentSkinObject,
false);
} else if (sType.equals("v-mysash")) {
skinObject = createMySash(properties, sID, sConfigID, sTypeParams,
parentSkinObject, true);
} else if (sType.equals("h-mysash")) {
skinObject = createMySash(properties, sID, sConfigID, sTypeParams,
parentSkinObject, false);
} else if (sType.equals("clone")) {
skinObject = createClone(properties, sID, sConfigID, sTypeParams,
parentSkinObject);
} else if (sType.equals("hidden")) {
return null;
} else if (sType.equals("browser")) {
skinObject = createBrowser(properties, sID, sConfigID, parentSkinObject);
} else {
System.err.println(sConfigID + ": Invalid type of " + sType);
}
if (bAddView) {
String sViewID = properties.getStringValue(sConfigID + ".view");
if (sViewID != null) {
setSkinObjectViewID(skinObject, sViewID);
if (skinObject instanceof SWTSkinObjectBasic) {
((SWTSkinObjectBasic) skinObject).setViewID(sViewID);
}
}
}
if (bLayoutComplete) {
attachControl(skinObject);
}
} catch (Exception e) {
e.printStackTrace();
}
return skinObject;
}
/**
* @param properties
* @param sid
* @param sConfigID
* @param parentSkinObject
* @return
*/
private SWTSkinObject createBrowser(SWTSkinProperties properties, String sID,
String sConfigID, SWTSkinObject parentSkinObject) {
SWTSkinObject skinObject = new SWTSkinObjectBrowser(this, properties, sID,
sConfigID, parentSkinObject);
addToControlMap(skinObject);
if (bLayoutComplete) {
attachControl(skinObject);
}
return skinObject;
}
private SWTSkinObject createClone(SWTSkinProperties properties, String sID,
String sConfigID, String[] typeParams, SWTSkinObject parentSkinObject) {
//System.out.println("Create Clone " + sID + " == " + sConfigID + " for " + parentSkinObject);
if (sConfigID == "") {
System.err.println("XXXXXXXX " + sID + " has no config ID.."
+ Debug.getStackTrace(false, false));
}
String[] sCloneParams;
if (typeParams.length > 1) {
int size = typeParams.length - 1;
sCloneParams = new String[size];
System.arraycopy(typeParams, 1, sCloneParams, 0, size);
} else {
sCloneParams = properties.getStringArray(sConfigID + ".clone");
if (sCloneParams == null || sCloneParams.length < 1) {
return null;
}
}
if (properties instanceof SWTSkinPropertiesClone) {
properties = ((SWTSkinPropertiesClone) properties).getOriginalProperties();
}
//System.out.println(sCloneParams[0]);
SWTSkinPropertiesClone cloneProperties = new SWTSkinPropertiesClone(
properties, sConfigID, sCloneParams);
return linkIDtoParent(cloneProperties, sID, "", parentSkinObject, false,
false);
}
private SWTSkinObject createImageLabel(SWTSkinProperties properties,
String sID, String sConfigID, String sImageID, String[] typeParams,
SWTSkinObject parentSkinObject) {
if (sImageID == null) {
sImageID = sConfigID;
if (typeParams.length > 1) {
properties.addProperty(sConfigID + ".image", typeParams[1]);
}
}
SWTSkinObjectImage skinObject = new SWTSkinObjectImage(this, properties,
sID, sConfigID, sImageID, parentSkinObject);
addToControlMap(skinObject);
return skinObject;
}
private SWTSkinObject createContainer2(SWTSkinProperties properties,
String sID, final String sConfigID, SWTSkinObject parentSkinObject,
boolean bForceCreate, boolean bPropogate, SWTSkinObject intoSkinObject) {
String[] sItems = properties.getStringArray(sConfigID + ".widgets");
if (sItems == null && !bForceCreate) {
return null;
}
if (DEBUGLAYOUT) {
System.out.println("createContainer: " + sID + ";"
+ properties.getStringValue(sConfigID + ".widgets"));
}
SWTSkinObject skinObject = getSkinObjectByID(sID, parentSkinObject);
if (skinObject == null) {
if (intoSkinObject == null) {
skinObject = new SWTSkinObjectImageContainer(this, properties, sID,
sConfigID, parentSkinObject);
addToControlMap(skinObject);
} else {
skinObject = intoSkinObject;
}
} else {
if (!(skinObject instanceof SWTSkinObjectContainer)) {
return skinObject;
}
}
if (!bPropogate) {
bPropogate = properties.getIntValue(sConfigID + ".propogate", 0) == 1;
}
if (!bPropogate && (parentSkinObject instanceof SWTSkinObjectContainer)) {
bPropogate = ((SWTSkinObjectContainer) parentSkinObject).getPropogation();
}
if (bPropogate) {
((SWTSkinObjectContainer) skinObject).setPropogation(true);
}
if (sItems != null) {
String[] paramValues = null;
if (properties instanceof SWTSkinPropertiesParam) {
paramValues = ((SWTSkinPropertiesParam) properties).getParamValues();
}
// Cloning is only for one level. Children get the original properties
// object
if (properties instanceof SWTSkinPropertiesClone) {
properties = ((SWTSkinPropertiesClone) properties).getOriginalProperties();
}
// Propogate any parameter values.
// XXX This could get ugly, we should could the # of
// SWTSkinPropertiesParam to determine if this needs optimizing
// ie. if a top container has paramValues, every child will get a new
// object. How would this affect memory/performace?
if (paramValues != null) {
properties = new SWTSkinPropertiesParamImpl(properties, paramValues);
}
for (int i = 0; i < sItems.length; i++) {
String sItemID = sItems[i];
linkIDtoParent(properties, sItemID, sItemID, skinObject, false, true);
}
}
if (bLayoutComplete) {
attachControl(skinObject);
}
return skinObject;
}
private SWTSkinObject createImageLabel2(SWTSkinProperties properties,
String sConfigID, SWTSkinObject parentSkinObject) {
Composite createOn;
if (parentSkinObject == null) {
createOn = shell;
} else {
createOn = (Composite) parentSkinObject.getControl();
}
final Canvas drawable = new Canvas(createOn, SWT.NO_BACKGROUND);
drawable.setVisible(false);
ImageLoader imageLoader = getImageLoader(properties);
Image image = imageLoader.getImage(sConfigID);
if (ImageLoader.isRealImage(image)) {
image = imageLoader.getImage(sConfigID + ".image");
}
drawable.setData("image", image);
SWTSkinObjectBasic skinObject = new SWTSkinObjectBasic(this, properties,
drawable, sConfigID, sConfigID, "image", parentSkinObject);
addToControlMap(skinObject);
ontopImages.add(skinObject);
return skinObject;
}
public SWTSkinProperties getSkinProperties() {
return skinProperties;
}
public void addListener(String viewID, SWTSkinObjectListener listener) {
mapPublicViewIDsToListeners_mon.enter();
try {
Object existing = mapPublicViewIDsToListeners.get(viewID);
if (existing instanceof List) {
List list = (List) existing;
list.add(listener);
} else {
ArrayList list = new ArrayList();
list.add(listener);
mapPublicViewIDsToListeners.put(viewID, list);
}
} finally {
mapPublicViewIDsToListeners_mon.exit();
}
}
public SWTSkinObjectListener[] getSkinObjectListeners(String viewID) {
if (viewID == null) {
return new SWTSkinObjectListener[0];
}
mapPublicViewIDsToListeners_mon.enter();
try {
Object existing = mapPublicViewIDsToListeners.get(viewID);
if (existing instanceof List) {
List list = (List) existing;
return (SWTSkinObjectListener[]) list.toArray(new SWTSkinObjectListener[0]);
} else {
return new SWTSkinObjectListener[0];
}
} finally {
mapPublicViewIDsToListeners_mon.exit();
}
}
public static void main(String[] args) {
java.util.Date d = new java.util.Date();
long t = d.getTime();
t -= (1156 * 24 * 60 * 60 * 1000l);
t -= (6 * 60 * 60 * 1000l);
t -= (17 * 60 * 1000l);
Date then = new Date(t);
System.out.println(d + ";" + then);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -