/******************************************************************************* * Copyright (c) 2007-2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.attribute.editor; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Slider; public class SliderCellEditorEx extends CellEditor { private Slider slider = null; private int style = SWT.HORIZONTAL; private static final int MAX_SLIDER_VALUE = 1000; private static final int MIN_SLIDER_VALUE = 0; private static final int INCREMENT_SLIDER_VALUE = 10; private static final int DEFAULT_SLIDER_VALUE = 500; public SliderCellEditorEx() { super(); } public SliderCellEditorEx(Composite parent) { super(parent); } public SliderCellEditorEx(Composite parent, int style) { super(parent, style); this.style = style; } @Override protected Control createControl(Composite parent) { slider = new Slider(parent, this.style); slider.setMaximum(MAX_SLIDER_VALUE); slider.setMinimum(MIN_SLIDER_VALUE); slider.setIncrement(INCREMENT_SLIDER_VALUE); slider.setSelection(DEFAULT_SLIDER_VALUE); return slider; } @Override protected Object doGetValue() { if (null != slider) { slider.getSelection(); } return null; } @Override protected void doSetFocus() { if (null != slider) { slider.setFocus(); } } @Override protected void doSetValue(Object value) { try { int intValue = Integer.parseInt(value.toString()); if (intValue <= MAX_SLIDER_VALUE && intValue >= MIN_SLIDER_VALUE) { slider.setSelection(intValue); } } catch (NumberFormatException e) { // Do nothing } } }