-package swingjs.plaf;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import swingjs.api.DOMNode;\r
-import jsjava.awt.Dimension;\r
-import jsjavax.swing.AbstractButton;\r
-import jsjavax.swing.ButtonGroup;\r
-import jsjavax.swing.DefaultButtonModel;\r
-import jsjavax.swing.JRadioButton;\r
-\r
-public class JSRadioButtonUI extends JSButtonUI {\r
-\r
- private DOMNode label;\r
- private static Map<ButtonGroup, String> groupNames;\r
- \r
-\r
- @Override\r
- public DOMNode getDOMObject() {\r
- return getButtonObject("radio");\r
- }\r
-\r
- @Override\r
- protected String getPropertyPrefix() {\r
- return "RadioButton.";\r
- }\r
-\r
- protected Dimension setHTMLSize(DOMNode obj, boolean addCSS) {\r
- // "absolute" is required for positioning of button, but must not be there for setting the size. \r
- DOMNode.setStyles(domBtn, "position", null);\r
- DOMNode.setStyles(label, "position", null);\r
- Dimension d = setHTMLSize1(obj, addCSS, false);\r
- DOMNode.setStyles(domBtn, "position", "absolute");\r
- DOMNode.setStyles(label, "position", "absolute");\r
- return d;\r
- }\r
-\r
- protected DOMNode getButtonObject(String myType) {\r
- JRadioButton b = (JRadioButton) c;\r
- boolean isNew = false;\r
- boolean doAll = false;\r
- if (domNode == null) {\r
- doAll = true;\r
- if (groupNames == null)\r
- groupNames = new HashMap<ButtonGroup, String>();\r
- ButtonGroup bg = null;\r
- String name = id;\r
- isNew = true;\r
- if (b.getModel() instanceof DefaultButtonModel) {\r
- bg = ((DefaultButtonModel) b.getModel()).getGroup();\r
- name = groupNames.get(bg);\r
- if (name == null)\r
- groupNames.put(bg, name = id);\r
- else\r
- isNew = false;\r
- }\r
- domBtn = enableNode = createDOMObject("input", id, "type", myType, "name",\r
- name);\r
- label = textNode = createDOMObject("label", id + "l", "htmlFor", id);\r
- }\r
- if (b.isSelected() || isNew)\r
- DOMNode.setAttr(domBtn, "checked", "true");\r
- setCssFont(\r
- DOMNode.setAttr(label, "innerHTML", ((AbstractButton) c).getText()),\r
- c.getFont());\r
- // now wrap the two with a span and get its dimensions\r
- // along with the dimensions of the radio button by itself.\r
- // This is a hack, for sure.\r
-\r
- Dimension drad = setHTMLSize1(domBtn, false, false);\r
- /*Dimension dlab = */ setHTMLSize1(label, false, false);\r
- \r
- DOMNode obj = wrap("div", "", domBtn, label);\r
- Dimension dobj = setHTMLSize1(obj, true, true);\r
- vCenter(domBtn, -75);\r
- vCenter(label, -50);\r
- DOMNode.setStyles(label, "position", "absolute", "left", drad.width + "px");\r
- DOMNode.setStyles(domBtn, "position", "absolute");\r
- if (doAll) {\r
- // now wrap these in a div\r
- obj = wrap("div", id + "_0", domBtn, label);\r
- DOMNode.setStyles(obj, "position", "absolute");\r
- } else {\r
- // must re-introduce these to the original object\r
- obj = domNode;\r
- obj.appendChild(domBtn);\r
- obj.appendChild(label);\r
- }\r
- return DOMNode.setSize(obj, dobj.width, dobj.height);\r
- }\r
-\r
- \r
-}\r
+package swingjs.plaf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import swingjs.api.DOMNode;
+import jsjava.awt.Dimension;
+import jsjavax.swing.AbstractButton;
+import jsjavax.swing.ButtonGroup;
+import jsjavax.swing.DefaultButtonModel;
+import jsjavax.swing.JRadioButton;
+
+public class JSRadioButtonUI extends JSButtonUI {
+
+ private DOMNode label;
+ private static Map<ButtonGroup, String> groupNames;
+
+
+ @Override
+ public DOMNode getDOMObject() {
+ return getButtonObject("radio");
+ }
+
+ @Override
+ protected String getPropertyPrefix() {
+ return "RadioButton.";
+ }
+
+ protected Dimension setHTMLSize(DOMNode obj, boolean addCSS) {
+ // "absolute" is required for positioning of button, but must not be there for setting the size.
+ DOMNode.setStyles(domBtn, "position", null);
+ DOMNode.setStyles(label, "position", null);
+ Dimension d = setHTMLSize1(obj, addCSS, false);
+ DOMNode.setStyles(domBtn, "position", "absolute");
+ DOMNode.setStyles(label, "position", "absolute");
+ return d;
+ }
+
+ protected DOMNode getButtonObject(String myType) {
+ JRadioButton b = (JRadioButton) c;
+ boolean isNew = false;
+ boolean doAll = false;
+ if (domNode == null) {
+ doAll = true;
+ if (groupNames == null)
+ groupNames = new HashMap<ButtonGroup, String>();
+ ButtonGroup bg = null;
+ String name = id;
+ isNew = true;
+ if (b.getModel() instanceof DefaultButtonModel) {
+ bg = ((DefaultButtonModel) b.getModel()).getGroup();
+ name = groupNames.get(bg);
+ if (name == null)
+ groupNames.put(bg, name = id);
+ else
+ isNew = false;
+ }
+ domBtn = enableNode = createDOMObject("input", id, "type", myType, "name",
+ name);
+ label = textNode = createDOMObject("label", id + "l", "htmlFor", id);
+ }
+ if (b.isSelected() || isNew)
+ DOMNode.setAttr(domBtn, "checked", "true");
+ setCssFont(
+ DOMNode.setAttr(label, "innerHTML", ((AbstractButton) c).getText()),
+ c.getFont());
+ // now wrap the two with a span and get its dimensions
+ // along with the dimensions of the radio button by itself.
+ // This is a hack, for sure.
+
+ Dimension drad = setHTMLSize1(domBtn, false, false);
+ /*Dimension dlab = */ setHTMLSize1(label, false, false);
+
+ DOMNode obj = wrap("div", "", domBtn, label);
+ Dimension dobj = setHTMLSize1(obj, true, true);
+ vCenter(domBtn, -75);
+ vCenter(label, -50);
+ DOMNode.setStyles(label, "position", "absolute", "left", drad.width + "px");
+ DOMNode.setStyles(domBtn, "position", "absolute");
+ if (doAll) {
+ // now wrap these in a div
+ obj = wrap("div", id + "_0", domBtn, label);
+ DOMNode.setStyles(obj, "position", "absolute");
+ } else {
+ // must re-introduce these to the original object
+ obj = domNode;
+ obj.appendChild(domBtn);
+ obj.appendChild(label);
+ }
+ return DOMNode.setSize(obj, dobj.width, dobj.height);
+ }
+
+
+}