/** * * @author greg (at) myrobotlab.org * * This file is part of MyRobotLab (http://myrobotlab.org). * * MyRobotLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version (subject to the "Classpath" exception * as provided in the LICENSE.txt file that accompanied this code). * * MyRobotLab is distributed in the hope that it will be useful or fun, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * All libraries in thirdParty bundle are subject to their own license * requirements - please refer to http://myrobotlab.org/libraries for * details. * * Enjoy ! * * */ package org.myrobotlab.control.opencv; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.myrobotlab.opencv.FilterWrapper; import org.myrobotlab.service.GUIService; public class OpenCVFloorFinderGUI extends OpenCVFilterGUI { public class AdjustSlider implements ChangeListener { @Override public void stateChanged(ChangeEvent e) { JSlider2 slider = (JSlider2) e.getSource(); Object[] params = new Object[3]; params[0] = name; params[1] = slider.getName(); params[2] = slider.getValue(); if (slider.getName().compareTo("apertureSize") == 0) { params[2] = slider.getValue() * 2 + 1; } myGUI.send(boundServiceName, "setFilterCFG", params); slider.value.setText("" + slider.getValue()); } } public class JSlider2 extends JSlider { private static final long serialVersionUID = 1L; JLabel value = new JLabel(); public JSlider2(int vertical, int i, int j, int k) { super(vertical, i, j, k); value.setText("" + k); } } JSlider2 lowThreshold = new JSlider2(JSlider.HORIZONTAL, 0, 256, 0); JSlider2 highThreshold = new JSlider2(JSlider.HORIZONTAL, 0, 256, 256); JSlider2 apertureSize = new JSlider2(JSlider.HORIZONTAL, 1, 3, 1); AdjustSlider change = new AdjustSlider(); public OpenCVFloorFinderGUI(String boundFilterName, String boundServiceName, GUIService myService) { super(boundFilterName, boundServiceName, myService); lowThreshold.setName("lowThreshold"); highThreshold.setName("highThreshold"); apertureSize.setName("apertureSize"); lowThreshold.addChangeListener(change); highThreshold.addChangeListener(change); apertureSize.addChangeListener(change); GridBagConstraints gc2 = new GridBagConstraints(); TitledBorder title; JPanel j = new JPanel(new GridBagLayout()); title = BorderFactory.createTitledBorder("threshold"); j.setBorder(title); gc.gridx = 0; gc.gridy = 0; j.add(new JLabel("low"), gc); ++gc.gridx; j.add(lowThreshold, gc); ++gc.gridx; j.add(lowThreshold.value, gc); ++gc.gridy; gc.gridx = 0; j.add(new JLabel("high"), gc); ++gc.gridx; j.add(highThreshold, gc); ++gc.gridx; j.add(highThreshold.value, gc); display.add(j, gc2); gc2.gridy = 1; gc2.gridx = 0; j = new JPanel(new GridBagLayout()); title = BorderFactory.createTitledBorder("apertureSize"); j.setBorder(title); j.add(apertureSize); j.add(apertureSize.value); display.add(j, gc2); } @Override public void getFilterState(FilterWrapper filterWrapper) { // TODO Auto-generated method stub } }