Changeset 4847
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebContent/ITMILL/themes/default/slider/slider.css
r4561 r4847 4 4 5 5 .i-slider { 6 border: 1px solid #cccfd0; 6 border-top: 1px solid #cccfd0; 7 border-bottom: 1px solid #cccfd0; 7 8 height: 3px; 8 9 margin: 5px 0; … … 13 14 border-top: 1px solid #cbcdce; 14 15 background: #f3f3f4; 16 border-left: 1px solid #cccfd0; 17 border-right: 1px solid #cccfd0; 18 15 19 } 16 20 .i-slider-handle { … … 25 29 background-position: left bottom; 26 30 } 31 32 .i-slider-scrollbar .i-slider-handle, 33 .i-slider-scrollbar.i-slider-vertical .i-slider-handle { 34 background: #ffffff; 35 border: 1px solid #cccfd0; 36 border-radius: 6px; 37 -moz-border-radius: 6px; 38 -webkit-border-radius: 6px; 39 40 } 41 27 42 /* TODO 28 43 .i-slider-bigger { … … 62 77 height: auto; 63 78 margin: 0 5px; 79 border: none; 80 border-left: 1px solid #cccfd0; 81 border-right: 1px solid #cccfd0; 64 82 } 65 83 .i-slider-vertical .i-slider-base { 66 84 width: 2px; 67 85 border-left: 1px solid #cbcdce; 86 border-right: none; 68 87 background: #f3f3f4; 88 border-top: 1px solid #cccfd0; 89 border-bottom: 1px solid #cccfd0; 69 90 } 70 91 .i-slider-vertical .i-slider-handle { -
trunk/src/com/itmill/toolkit/terminal/gwt/client/ui/ISlider.java
r4531 r4847 2 2 @ITMillApache2LicenseForJavaFiles@ 3 3 */ 4 4 // 5 5 package com.itmill.toolkit.terminal.gwt.client.ui; 6 6 … … 10 10 import com.google.gwt.user.client.Element; 11 11 import com.google.gwt.user.client.Event; 12 import com.google.gwt.user.client.Timer;13 12 import com.google.gwt.user.client.ui.Widget; 14 13 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; … … 61 60 /* Temporary dragging/animation variables */ 62 61 private boolean dragging = false; 63 private Timer anim;64 62 65 63 public ISlider() { … … 138 136 139 137 handleSize = uidl.getIntAttribute("hsize"); 140 141 if (uidl.hasAttribute("size")) {142 size = uidl.getIntAttribute("size");143 }144 138 145 139 buildBase(); … … 231 225 return; 232 226 } 227 233 228 if (value.doubleValue() < min) { 234 229 value = new Double(min); … … 246 241 final int range = baseSize - handleSize; 247 242 double v = value.doubleValue(); 243 // Round value to resolution 244 if (resolution > 0) { 245 v = Math.round(v * Math.pow(10, resolution)); 246 v = v / Math.pow(10, resolution); 247 } else { 248 v = Math.round(v); 249 } 248 250 final double valueRange = max - min; 249 251 double p = 0; … … 263 265 final int current = DOM.getIntStyleAttribute(handle, styleAttribute); 264 266 265 if ((int) (Math.round(pos)) != current && animate) { 266 if (anim != null) { 267 anim.cancel(); 268 } 269 anim = new Timer() { 270 private int current; 271 private final int goal = (int) Math.round(pos); 272 private int dir = 0; 273 274 public void run() { 275 current = DOM.getIntStyleAttribute(handle, styleAttribute); 276 277 // Determine direction 278 if (dir == 0) { 279 dir = (goal - current) / Math.abs(goal - current); 280 } 281 282 if ((dir > 0 && current >= goal) 283 || (dir < 0 && current <= goal)) { 284 cancel(); 285 return; 286 } 287 final int increment = (goal - current) / 2; 288 DOM.setStyleAttribute(handle, styleAttribute, 289 (current + increment) + "px"); 290 } 291 }; 292 anim.scheduleRepeating(50); 293 } else { 294 DOM.setStyleAttribute(handle, styleAttribute, ((int) pos) + "px"); 295 } 296 297 // Round value to resolution 298 if (resolution > 0) { 299 v = (int) (v * Math.pow(10, resolution)); 300 v = v / Math.pow(10, resolution); 301 } else { 302 v = Math.round(v); 303 } 267 DOM.setStyleAttribute(handle, styleAttribute, (Math.round(pos)) + "px"); 304 268 305 269 // TODO give more detailed info when dragging and do roundup … … 326 290 processHandleEvent(event); 327 291 } else if (DOM.compare(targ, smaller)) { 328 decreaseValue(event , true);292 decreaseValue(event); 329 293 } else if (DOM.compare(targ, bigger)) { 330 increaseValue(event , true);294 increaseValue(event); 331 295 } else { 332 296 processBaseEvent(event); … … 337 301 final int dir = DOM.eventGetMouseWheelVelocityY(event); 338 302 if (dir < 0) { 339 increaseValue(event , false);340 } else { 341 decreaseValue(event , false);303 increaseValue(event); 304 } else { 305 decreaseValue(event); 342 306 } 343 307 DOM.eventPreventDefault(event); … … 349 313 case Event.ONMOUSEDOWN: 350 314 if (!disabled && !readonly) { 351 if (anim != null) {352 anim.cancel();353 }354 315 dragging = true; 355 316 DOM.setCapture(getElement()); … … 387 348 } 388 349 389 private void decreaseValue(Event event , boolean animate) {350 private void decreaseValue(Event event) { 390 351 setValue(new Double(value.doubleValue() - Math.pow(10, -resolution)), 391 352 false, true); 392 if (DOM.eventGetType(event) == Event.ONMOUSEDOWN && animate) { 393 if (anim != null) { 394 anim.cancel(); 395 } 396 anim = new Timer() { 397 public void run() { 398 if (value.doubleValue() - Math.pow(10, -resolution) > min) { 399 setValue(new Double(value.doubleValue() 400 - Math.pow(10, -resolution)), false, true); 401 } 402 } 403 }; 404 anim.scheduleRepeating(100); 405 DOM.eventCancelBubble(event, true); 406 } else if (anim != null) { 407 anim.cancel(); 408 } 409 } 410 411 private void increaseValue(Event event, boolean animate) { 353 } 354 355 private void increaseValue(Event event) { 412 356 setValue(new Double(value.doubleValue() + Math.pow(10, -resolution)), 413 357 false, true); 414 if (DOM.eventGetType(event) == Event.ONMOUSEDOWN && animate) {415 if (anim != null) {416 anim.cancel();417 }418 anim = new Timer() {419 public void run() {420 if (value.doubleValue() - Math.pow(10, -resolution) < max) {421 setValue(new Double(value.doubleValue()422 + Math.pow(10, -resolution)), false, true);423 }424 }425 };426 anim.scheduleRepeating(100);427 DOM.eventCancelBubble(event, true);428 } else if (anim != null) {429 anim.cancel();430 }431 358 } 432 359 … … 475 402 DOM.setStyleAttribute(base, "height", "0"); 476 403 DOM.setStyleAttribute(base, "overflow", "hidden"); 477 final int decoHeight = DOM.getElementPropertyInt(getElement(), 478 "offsetHeight"); 479 // Get available space size 480 final int availableHeight = DOM.getElementPropertyInt(DOM 481 .getParent(getElement()), "offsetHeight"); 482 int h = availableHeight - decoHeight; 404 int h = DOM.getElementPropertyInt(getElement(), "offsetHeight"); 483 405 if (h < MIN_SIZE) { 484 406 h = MIN_SIZE;
