Skip to content

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

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
*/
2727
public class JSScrollBarUI extends JSSliderUI {
2828

29-
private JSScrollPaneUI myScrollPaneUI;
30-
3129
void setScrollPaneUI(JSScrollPaneUI ui) {
3230
myScrollPaneUI = ui;
3331
}
@@ -51,13 +49,6 @@ public DOMNode updateDOMNode() {
5149
return domNode;
5250
}
5351

54-
@Override
55-
public void setBackgroundCUI(Color background) {
56-
if (background != null) {
57-
DOMNode.setStyles(sliderTrack, "background-color", JSToolkit.getCSSColor(background));
58-
}
59-
}
60-
6152
@Override
6253
public void propertyChange(PropertyChangeEvent e) {
6354
super.propertyChange(e);
@@ -123,7 +114,7 @@ public void setVisible(boolean b) {
123114
*/
124115
@Override
125116
void setScrollBarExtentAndCSS() {
126-
String left, top, thickness;
117+
String left, top, thickness, transform, leftt;
127118
JScrollBar sb = (JScrollBar) jc;
128119
int extent = sb.getVisibleAmount();
129120
// int max = sb.getMaximum();
@@ -137,19 +128,23 @@ void setScrollBarExtentAndCSS() {
137128
// in
138129
int d = (isVertical ? sb.getWidth() : sb.getHeight());
139130
int t = (int) Math.min(d * 0.8, 12);
140-
left = top = ((d - t)/2 + 1) + "px";
141-
thickness = t + "px";
131+
left = top = "50%";//((d - t)/2 + 1) + "px";
132+
thickness = (Math.floor(t/2)*2-1) + "px";
133+
leftt = "50%";
134+
transform = "translate(" + (isVertical ? "X":"Y") + ")";
142135
} else {
143136
left = "0px";
144-
top = "0px";
137+
leftt = "0px";
138+
top = (isAWT ? "4px" : "0px");
145139
thickness = "12px";
140+
transform = null;
146141
}
147142
if (isVertical) {
148-
DOMNode.setStyles(sliderTrack, "left", left, "width", thickness, "background", toCSSString(getBackground()));
149-
DOMNode.setStyles(sliderHandle, "left", "-1px", "margin-bottom", "0px");
143+
DOMNode.setStyles(sliderTrack, "transform", transform, "left", left, "width", thickness);//, "background", toCSSString(getBackground()));
144+
DOMNode.setStyles(sliderHandle, "box-sizing", "border-box", "left", leftt, "margin-bottom", "0px");
150145
} else {
151-
DOMNode.setStyles(sliderTrack, "top", top, "height", thickness, "background", toCSSString(getBackground()));
152-
DOMNode.setStyles(sliderHandle, "top", "-1px", "margin-left", "0px");
146+
DOMNode.setStyles(sliderTrack, "top", top, "height", thickness);//, "background", toCSSString(getBackground()));
147+
DOMNode.setStyles(sliderHandle, "box-sizing", "border-box", "top", leftt, "margin-left", "0px");
153148
}
154149
}
155150

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

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import javax.swing.event.ChangeEvent;
2020
import javax.swing.event.ChangeListener;
2121
import sun.swing.DefaultLookup;
22+
import swingjs.JSToolkit;
2223
import swingjs.JSUtil;
2324
import swingjs.api.js.DOMNode;
2425
import swingjs.jquery.JQueryUI;
@@ -55,6 +56,7 @@ public class JSSliderUI extends JSLightweightUI implements PropertyChangeListene
5556
private BoundedRangeModel model;
5657
private boolean paintTrack = true;
5758

59+
protected JSScrollPaneUI myScrollPaneUI;
5860
protected boolean isScrollBar;
5961
private JScrollBar jScrollBar;
6062
protected DOMNode sliderTrack;
@@ -117,13 +119,22 @@ public DOMNode updateDOMNode() {
117119
}
118120
setup(isNew || isChanged);
119121
setSlider();
120-
setBackgroundCUI(getBackground());
122+
setBackground(getBackground());
121123
return updateDOMNodeCUI();
122124
}
123125

124-
public void setBackgroundCUI(Color background) {
125-
if (jc.isOpaque())
126-
super.setBackgroundCUI(background);
126+
@Override
127+
public void setBackground(Color background) {
128+
if (awtPeerBG != null && !jc.isDisplayable() && !awtPeerBG.equals(background))
129+
awtPeerBG = null;
130+
if (isScrollBar ? background != null : jc.isOpaque())
131+
DOMNode.setStyles(myScrollPaneUI == null && !paintTicks ? jqSlider : sliderTrack, "background-color", JSToolkit.getCSSColor(background));
132+
if (paintTicks)
133+
DOMNode.setStyles(jqSlider, "background-color", "black");
134+
}
135+
136+
protected void setBackgroundFor(DOMNode node, Color color) {
137+
setBackground(color);
127138
}
128139

129140
private void disposeSlider() {
@@ -278,19 +289,28 @@ public void setSlider() {
278289
if (isHoriz && slider.getBorder() != null)
279290
barPlace += 10;
280291

281-
String tickClass = "ui-j2sslider-tick-mark"
282-
+ (isHoriz ? "-vert" : "-horiz");
292+
String tickClass = "ui-j2sslider-tick-mark" + (isHoriz ? "-vert" : "-horiz");
283293
$(domNode).find("." + tickClass).remove();
284294
$(domNode).find(".jslider-labels").remove();
285295
getHTMLSizePreferred(jqSlider, false);
286-
if (majorSpacing == 0 && minorSpacing == 0 || !paintTicks && !paintLabels)
296+
if (majorSpacing == 0 && minorSpacing == 0 || !paintTicks && !paintLabels) {
297+
if (myScrollPaneUI != null) {
298+
DOMNode.setStyles(sliderHandle, "transform", null);
299+
DOMNode.setStyles(sliderTrack, "transform", null);
300+
} else if( isHoriz) {
301+
DOMNode.setStyles(sliderHandle, "top", "50%", "transform", "translateY(-50%)");
302+
DOMNode.setStyles(sliderTrack, "top", "50%", "transform", "translateY(-50%)");
303+
} else {
304+
DOMNode.setStyles(sliderHandle, "left", "50%", "transform", "translateX(-50%)");
305+
DOMNode.setStyles(sliderTrack, "left", "50%", "transform", "translateX(-50%)");
306+
}
287307
return;
308+
}
288309
int margin = 10;
289310

290311
int length = (isHoriz ? slider.getWidth() : slider.getHeight());
291312
if (length <= 0)
292-
length = (isHoriz ? getPreferredHorizontalSize().width
293-
: getPreferredVerticalSize().height);
313+
length = (isHoriz ? getPreferredHorizontalSize().width : getPreferredVerticalSize().height);
294314
if (isHoriz)
295315
actualWidth = length;
296316
else
@@ -306,12 +326,11 @@ public void setSlider() {
306326
ticks = new int[numTicks];
307327
for (int i = 0; i < numTicks; i++) {
308328
DOMNode node = DOMNode.createElement("div", id + "_t" + i);
309-
$(node).addClass("swingjs");//??
329+
$(node).addClass("swingjs");// ??
310330
$(node).addClass(tickClass);
311331
boolean isMajor = (i % check == 0);
312332
ticks[i] = minorSpacing * i + min;
313-
float frac = (isHoriz == isInverted ? 1 - fracSpacing * i : fracSpacing
314-
* i);
333+
float frac = (isHoriz == isInverted ? 1 - fracSpacing * i : fracSpacing * i);
315334
String spt = (frac * length + margin) + "px";
316335
if (isMajor)
317336
$(node).css(isHoriz ? "height" : "width", "8px");
@@ -346,21 +365,17 @@ public void setSlider() {
346365
DOMNode.setTopLeftAbsolute(labelNode, top, left);
347366
domNode.insertBefore(labelNode, sliderTrack);
348367
}
349-
368+
350369
}
351370
if (paintTicks) {
352371
if (isHoriz) {
353-
DOMNode.setStyles(sliderHandle, "transform",
354-
"scaleX(0.5) rotateZ(45deg)", "top", "-8px");
355-
DOMNode.setStyles(sliderTrack, "height", "1px", "background", "black",
356-
"top", "10px");
372+
DOMNode.setStyles(sliderHandle, "transform", "scaleX(0.5) rotateZ(45deg)", "top", "-8px");
373+
DOMNode.setStyles(sliderTrack, "height", "1px", "background", "black", "top", "12px", "border", "none");
357374
setSliderAttr("scaleX", 0.5f);
358375
} else {
359-
DOMNode.setStyles(sliderHandle, "transform",
360-
"scaleY(0.5) rotateZ(45deg)", "left", "-10px", "margin-bottom",
361-
"-7px");
362-
DOMNode.setStyles(sliderTrack, "width", "1px", "left", "12px",
363-
"background", "black");
376+
DOMNode.setStyles(sliderHandle, "transform", "scaleY(0.5) rotateZ(45deg)", "left", "-10px",
377+
"margin-bottom", "-7px");
378+
DOMNode.setStyles(sliderTrack, "width", "1px", "left", "12px", "background", "black", "border", "none");
364379
setSliderAttr("scaleY", 0.5f);
365380
}
366381

@@ -370,8 +385,8 @@ public void setSlider() {
370385
if (isScrollBar) {
371386
setScrollBarExtentAndCSS();
372387
} else {
373-
if (!isHoriz)
374-
DOMNode.setStyles(sliderTrack, "height", length + "px");
388+
if (!isHoriz)
389+
DOMNode.setStyles(sliderTrack, "height", length + "px");
375390
}
376391
getHTMLSizePreferred(domNode, false);
377392
}
@@ -506,7 +521,6 @@ public void scrollByBlock(int direction, int val0) {
506521
// }
507522

508523
private int snapTo(int val) {
509-
System.out.println("jsslider snapto " + val);
510524
if (ticks != null && ticks.length > 2 && slider.getSnapToTicks()) {
511525
int dc = Integer.MAX_VALUE;
512526
int v = val;

0 commit comments

Comments
 (0)