Skip to content

Commit 1d8e790

Browse files
hansonrhansonr
authored andcommitted
better Frame embedding
1 parent 1661a3e commit 1d8e790

File tree

4 files changed

+53
-20
lines changed

4 files changed

+53
-20
lines changed

sources/net.sf.j2s.java.core/src/javax/swing/JFrame.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public void add(Component comp, Object constraints) {
170170
*/
171171
protected boolean rootPaneCheckingEnabled = false;
172172

173-
private boolean _boundsFrozen;
173+
private boolean 秘boundsFrozen;
174174

175175
/**
176176
* Constructs a new frame that is initially invisible.
@@ -915,15 +915,15 @@ protected String paramString() {
915915
+ ",rootPaneCheckingEnabled=" + rootPaneCheckingEnabledString;
916916
}
917917

918-
public void _freezeBounds(int w, int h) {
918+
public void 秘freezeBounds(int w, int h) {
919919
setSize(w, h);
920-
_boundsFrozen = true;
920+
秘boundsFrozen = true;
921921
resizable = false;
922922
}
923923

924924
@Override
925925
public void reshape(int x, int y, int width, int height) {
926-
if (!_boundsFrozen)
926+
if (!秘boundsFrozen)
927927
super.reshape(x, y, width, height);
928928
}
929929

sources/net.sf.j2s.java.core/src/swingjs/api/js/HTML5CanvasContext2D.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class ImageData {
1616

1717
public String font, fillStyle, strokeStyle;
1818

19+
public float globalAlpha;
20+
1921
public abstract void drawImage(DOMNode img, int sx,
2022
int sy, int swidth, int sheight, int dx, int dy, int dwidth, int dheight);
2123

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSComponentUI.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@
147147
public class JSComponentUI extends ComponentUI
148148
implements JSEventHandler, PropertyChangeListener, ChangeListener, DropTargetPeer {
149149

150+
public interface Embeddable {
151+
Object getEmbedded(String type);
152+
}
153+
150154
private static final int MENUITEM_OFFSET = 11;
151155

152156
final J2SInterface J2S = JSUtil.J2S;

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSFrameUI.java

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
* @author hansonr
4545
*
4646
*/
47-
public class JSFrameUI extends JSWindowUI implements FramePeer {
47+
public class JSFrameUI extends JSWindowUI implements FramePeer, JSComponentUI.Embeddable {
4848

4949
private static final Insets ZERO_INSETS = new Insets(0, 0, 0, 0);
5050

@@ -111,24 +111,11 @@ public DOMNode updateDOMNode() {
111111
h = defaultHeight;
112112
DOMNode.setSize(frameNode, w, h);
113113
DOMNode.setTopLeftAbsolute(frameNode, 0, 0);
114-
String fname = frame.getName();
115-
DOMNode node = DOMNode.getElement(fname + "-div");
114+
DOMNode node = (DOMNode) getEmbedded("init");
116115
if (node != null) {
117116
embeddingNode = node;
118-
doEmbed = (DOMNode.getWidth(embeddingNode) > 0);
117+
doEmbed = (DOMNode.getWidth(node) > 0);
119118
isHidden = !doEmbed;
120-
if (doEmbed) {
121-
frame.setUndecorated(true);
122-
frame.setLocation(0, 0);
123-
} else {
124-
DOMNode.setStyles(embeddingNode, "position", "relative", "overflow", "hidden");
125-
}
126-
127-
int ew = DOMNode.getWidth(node);
128-
int eh = DOMNode.getHeight(node);
129-
if (ew > 0 && eh > 0) {
130-
frame._freezeBounds(ew, eh);
131-
}
132119
}
133120
setWindowClass();
134121
if (!frame.isUndecorated()) {
@@ -182,6 +169,46 @@ public DOMNode updateDOMNode() {
182169
return domNode;
183170
}
184171

172+
/**
173+
* Note: DO NOT CHANGE THE NAME OF THIS METHOD
174+
*
175+
* @param frame
176+
* @param type
177+
* one of: "name", "node", "init", "dim"
178+
* @return
179+
*/
180+
@Override
181+
@SuppressWarnings("unused")
182+
public Object getEmbedded(String type) {
183+
String name = frame.getName();
184+
DOMNode node = DOMNode.getElement(name + "-div");
185+
if (node == null)
186+
return null;
187+
switch (type) {
188+
case "name":
189+
return name;
190+
case "node":
191+
return node;
192+
case "dim":
193+
return new Dimension(DOMNode.getWidth(node), DOMNode.getHeight(node));
194+
case "init":
195+
if (node == null)
196+
return null;
197+
Dimension dim = (Dimension) getEmbedded("dim");
198+
if (dim.width > 0) {
199+
frame.setUndecorated(true);
200+
frame.setLocation(0, 0);
201+
String resize = DOMNode.getStyle(node, "resize");
202+
if (resize == "none")
203+
frame.秘freezeBounds(dim.width, dim.height);
204+
} else {
205+
DOMNode.setStyles(node, "position", "relative", "overflow", "hidden");
206+
}
207+
return node;
208+
}
209+
return null;
210+
}
211+
185212
@Override
186213
protected boolean isFrameIndependent() {
187214
return !doEmbed;

0 commit comments

Comments
 (0)