[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [ve-dev] Example BeanInfo classes for SWT
|
Thanks much. I'll bang on the concepts I've been working a
bit this weekend.
I'm playing with some "grouping" concepts which might make
much of this easier as well as provide some nice additional support on top of
standard beans. Details soon...
Later!
-- Scott
Folks,
Following Wednesday's discussion on BeanInfo this is
the design that I believe we agreed upon to proceed with for the near term.
All of these examples are released into the CVS repository.
Style bits are defined on the
BeanDescriptor by a two dimensional value with a key of
"org.eclipse.ve.sweet". The array elements are the order:
String
internalName,
String displayName,
Boolean isExpert,
Object[] values.
The values is an Object[] that contains repeating
entries of
String displayName
String initializationString
Integer value
The following is an example of the BeanInfo class for
Button.
public BeanDescriptor
getBeanDescriptor() {
BeanDescriptor descriptor = new
BeanDescriptor(Button.class);
descriptor.setValue(
org.eclipse.ve.sweet.stylebits",
new Object[] [] {
{ "style" ,
"style" , Boolean.FALSE , new Object[] {
"PUSH" , "org.eclipse.swt.SWT.PUSH" , new Integer(SWT.PUSH)
,
"CHECK" , "org.eclipse.swt.SWT.CHECK" ,
new Integer(SWT.CHECK),
"RADIO" ,
"org.eclipse.swt.SWT.RADIO" ,
new Integer(SWT.RADIO) ,
"ARROW" , "org.eclipse.swt.SWT.ARROW" ,
new Integer(SWT.ARROW) ,
"TOGGLE" , "org.eclipse.swt.SWT.TOGGLE" ,
new Integer(SWT.TOGGLE)
} } ,
{ "textAlignment" ,
"textAlignment", Boolean.FALSE ,
new Object[] {
"LEFT" ,
"org.eclipse.swt.SWT.LEFT" ,
new Integer(SWT.LEFT) ,
"RIGHT" ,
"org.eclipse.swt.SWT.RIGHT" ,
new Integer(SWT.RIGHT) ,
"CENTER" , "org.eclipse.swt.SWT.CENTER" ,
new Integer(SWT.CENTER)
} },
{ "arrowStyle" ,
"arrowStyle", Boolean.FALSE , new
Object[] {
"UP" , "org.eclipse.swt.SWT.UP" , new Integer(SWT.UP) ,
"DOWN" , "org.eclipse.swt.SWT.DOWN" ,
new Integer(SWT.DOWN) ,
"LEFT" , "org.eclipse.swt.SWT.LEFT" ,
new Integer(SWT.LEFT) ,
"RIGHT" , "org.eclipse.swt.SWT.RIGHT" ,
new Integer(SWT.RIGHT)
} }
}
);
// Get any other inherited style bits and merge them in
return descriptor;
}
For the merging there is
a help called in org.eclipse.swt.beaninfo.SweetHelper with a static
method
/**
* Combine all of the style bits from the descriptor's classes superclass into the descriptor
*/
public static void
mergeSuperclassStyleBits(BeanDescriptor descriptor)
No implicit inheritance is done by the tool using the
style bits, although if no style bits are found then the inheritance chain is
walked to find the first BeanInfo whose BeanDescriptor does have style
bits.
For single value'd style
bits they are defined with just a single entry.
descriptor.setValue(
SweetHelper.STYLE_BITS_ID,
new Object[] [] {
{ "horizontalScroll" , "horizontalScroll" ,
Boolean.FALSE , new Object[] {
"H_SCROLL" , "org.eclipse.swt.SWT.H_SCROLL" ,
new Integer(SWT.H_SCROLL)
} } ,
{ "verticalScroll" ,
"verticalScroll" , Boolean.FALSE
, new Object[] {
"V_SCROLL" ,
"org.eclipse.swt.SWT.V_SCROLL" ,
new Integer(SWT.V_SCROLL)
} }
}
);
For the VE BeanInfo
classes the Composite will not include the bits NO_MERGE_PAINTS,
NO_BACKGROUND, NO_FOCUS, NO_DEFER_REDRAW. These are introduced on
CanvasBeanInfo. That way all custom controls and subclasses of
Composite by default will not include these style bits.
Best regards,
Joe Winchester