litesoft
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
package org.litesoft.GWT.forms.client.components.nonpublic;
import org.litesoft.GWT.client.widgets.*;
import com.google.gwt.event.dom.client.*;
import com.google.gwt.user.client.*;
import com.google.gwt.user.client.ui.*;
public class DialogButtonPanel extends HorizontalPanel
{
public DialogButtonPanel( ClickHandler pClickHandler, String... pButtons )
{
mButtons = new TextCellButton[pButtons.length];
boolean anyAdded = false;
for ( int i = 0; i < pButtons.length; i++ )
{
TextCellButton zButton = mButtons[i] = buildButton( pButtons, i, pClickHandler );
if ( zButton != null )
{
if ( anyAdded )
{
add( new Spacer( 5 ) );
}
add( zButton );
anyAdded = true;
}
}
DOM.setStyleAttribute( getElement(), "marginTop", "2px" ); // todo: Warning can mess up Sizeing
}
private TextCellButton buildButton( String[] pButtonTexts, int pIndex, ClickHandler pClickHandler )
{
String zText = pButtonTexts[pIndex];
if ( zText == null )
{
return null;
}
if ( (pButtonTexts.length == 1) || (pButtonTexts.length - 1) == pIndex )
{
return new GreenButton( zText, pClickHandler );
}
return (pIndex == 0) ? new RedButton( zText, pClickHandler ) : new RegButton( zText, pClickHandler );
}
public int findIndex( Widget pButton )
{
int i = mButtons.length;
while ( --i >= 0 )
{
if ( pButton == mButtons[i] )
{
return i;
}
}
return -1;
}
private TextCellButton[] mButtons;
protected void onAttach()
{
super.onAttach();
sizeAllButtons( mButtons );
}
public static void sizeAllButtons( TextCellButton[] pButtons )
{
boolean zAllSame = true;
int zFirstAt = -1;
int zMaxWidth = 0;
Integer[] zWidths = new Integer[pButtons.length];
for ( int i = 0; i < pButtons.length; i++ )
{
TextCellButton zButton = pButtons[i];
if ( zButton != null )
{
int zWidth = zButton.getOffsetWidth();
if ( zWidth < 1 )
{
System.err.println( "************** DialogButtonPanel.sizeAllButtons **************" );
return;
}
zWidths[i] = zWidth;
if ( zAllSame )
{
if ( zFirstAt == -1 )
{
zFirstAt = i;
zMaxWidth = zWidth;
}
else if ( !(zAllSame = zWidth == zWidths[zFirstAt]) )
{
zMaxWidth = Math.max( zMaxWidth, zWidth );
}
}
}
}
if ( !zAllSame )
{
for ( int i = 0; i < pButtons.length; i++ )
{
Integer zWidth = zWidths[i];
if ( (zWidth != null) && (zMaxWidth != zWidth) )
{
pButtons[i].setWidth( "" + zMaxWidth );
}
}
}
}
}
|
Revision |
Author |
Commited |
Message |
2
|
GeorgeS
|
Sun 07 Feb, 2010 12:50:58 +0000 |
|