All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jentity.numberbean.SliderBean Maven / Gradle / Ivy

The newest version!
package org.jentity.numberbean;

import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;

import org.jentity.CompositeView;
import org.jentity.DefaultGUIBean;
import org.jentity.EventGuard;
import org.jentity.datamodel.ChangeListener;
import org.jentity.datamodel.DataEntity;
import org.jentity.datamodel.DataProcessor;
import org.jentity.datamodel.ParameterEnum;

public class SliderBean extends CompositeView {
    protected final DataEntity model;
    protected final ParameterEnum valueParameter;
    protected final ParameterEnum minParameter;
    protected final ParameterEnum maxParameter;
    protected final JSlider view;
    private final EventGuard guard = new EventGuard();
	protected final DataProcessor processor = new DataProcessor("Text") {
        protected void processEntity(DataEntity dataEntity){
            // No default behavior, acts as root processor
        }
    };
    
    public SliderBean(final JSlider field,
                                  final DataEntity globalModel, 
                                  final ParameterEnum valueParameter,
                                  final ParameterEnum minParameter,
                                  final ParameterEnum maxParameter) {
        view = field;
        this.model = globalModel;
        this.valueParameter = valueParameter;
        this.minParameter = minParameter;
        this.maxParameter = maxParameter;
        addGUIBean(new DefaultGUIBean(model, new ChangeListener() {
        	public void handleUpdate(ChangeListener.ChangeEvent changeEvent) {
        		if (guard. getGuard()) {
        			if (changeEvent.getUpdateValues().isDefined(minParameter)) {
        				view.setMinimum(((Integer)changeEvent.getUpdateValues().getAttribute(minParameter)).intValue()); 
        			}
        			if (changeEvent.getUpdateValues().isDefined(maxParameter)) {
        				view.setMaximum(((Integer)changeEvent.getUpdateValues().getAttribute(maxParameter)).intValue()); 
        			}
        			if (changeEvent.getUpdateValues().isDefined(valueParameter)) {
        				view.setValue(((Integer)changeEvent.getUpdateValues().getAttribute(valueParameter)).intValue()); 
        			}
            		guard.releaseGuard();
        		}
        	}
        }));

        view.addChangeListener(new javax.swing.event.ChangeListener() {
        	public void stateChanged(ChangeEvent changeEvent) {
        		if (guard. getGuard()) {
        			DataEntity update = globalModel.createInstance();
        			Integer value = Integer.valueOf(((JSlider)changeEvent.getSource()).getValue());
        			if (!value.equals(model.getAttribute(valueParameter))) {
        				update.setAttribute(valueParameter, value);
        			}

        			Integer minimum = Integer.valueOf(((JSlider)changeEvent.getSource()).getMinimum());
        			if (!minimum.equals(model.getAttribute(minParameter))) {
        				update.setAttribute(minParameter, minimum);
        			}

        			Integer maximum = Integer.valueOf(((JSlider)changeEvent.getSource()).getMaximum());
        			if (!maximum.equals(model.getAttribute(maxParameter))) {
        				update.setAttribute(maxParameter, maximum);
        			}
        			processor.process(update);    
        			model.update(update);
            		guard.releaseGuard();
        		}
        	}
        });
    }

    public void setEnabled(boolean value) {
    	view.setEnabled(value);
        view.setFocusable(value);
    }

	public void addSubprocessor(DataProcessor subprocesser) {
		processor.addSubprocessor(subprocesser);
	}
    
    public JSlider getView() {
        return view;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy