Java tutorial
package tango.parameter; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import ij.gui.GenericDialog; import java.awt.Color; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.border.BevelBorder; import tango.gui.util.CollapsiblePanel; import tango.gui.util.Displayer; import tango.gui.util.Refreshable; /** * ** * /** * Copyright (C) 2012 Jean Ollion * * * * This file is part of tango * * tango 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 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, 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. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. * * @author Jean Ollion */ public class GroupParameter extends Parameter implements NestedParameter { Parameter[] parameters; Box mainBox; public GroupParameter(String label, String id) { super(id); this.label = new JLabel(label); box = new CollapsiblePanel(null, this.label); mainBox = Box.createVerticalBox(); //mainBox.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); //Box subBox = Box.createHorizontalBox(); //subBox.add(this.label); //mainBox.add(subBox); box.add(mainBox); } public void setParameters(Parameter[] parameters) { this.parameters = parameters; for (Parameter p : parameters) { p.setParent(this); p.addToContainer(mainBox); } setColor(); } public GroupParameter(String label, String id, Parameter[] parameters) { super(id); this.label = new JLabel(label); box = new CollapsiblePanel(null, this.label); //this.parameters=parameters; mainBox = Box.createVerticalBox(); //mainBox.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); /*for (Parameter p : parameters) { p.setParent(this); p.addToContainer(mainBox); }*/ box.add(mainBox); //setColor(); setParameters(parameters); } @Override public void dbPut(DBObject dbo) { BasicDBObject subDBO = new BasicDBObject(); subDBO.append("isCollapsed", ((CollapsiblePanel) box).isCollapsed()); for (Parameter p : parameters) p.dbPut(subDBO); dbo.put(id, subDBO); } @Override public void toggleVisibility(boolean visible) { ((CollapsiblePanel) box).toggleVisibility(visible); } @Override public void dbGet(BasicDBObject dbo) { BasicDBObject subDBO = (BasicDBObject) dbo.get(id); if (subDBO != null) { for (Parameter p : parameters) p.dbGet(subDBO); toggleVisibility(!subDBO.getBoolean("isCollapsed", false)); } setColor(); } @Override public Parameter duplicate(String newLabel, String newId) { return new GroupParameter(newLabel, newId, Parameter.duplicateArray(parameters)); } @Override protected void register() { box.addMouseListener(this); if (parameters != null) for (Parameter p : this.parameters) p.register(ml); } @Override protected void unRegister() { box.removeMouseListener(this); if (parameters != null) for (Parameter p : this.parameters) p.unRegister(ml); } @Override public Parameter[] getParameters() { return parameters; } @Override public void addToGenericDialog(GenericDialog gd) { ; } @Override public void refresh() { if (parameters == null) return; for (Parameter p : parameters) if (p instanceof Refreshable) ((Refreshable) p).refresh(); setColor(); } @Override public boolean sameContent(Parameter p) { return (p instanceof GroupParameter) && Parameter.sameValue(((GroupParameter) p).getParameters(), getParameters()); } @Override public void setContent(Parameter p) { if (p instanceof GroupParameter) { Parameter.setContent(getParameters(), ((GroupParameter) p).getParameters()); } } @Override public boolean isValid() { if (!this.compulsary) return true; if (parameters != null) { for (Parameter p : parameters) if (!p.isValidOrNotCompulsary()) return false; return true; } else return true; } @Override public void setTemplate(Parameter template) { if (parameters != null && template instanceof GroupParameter) { GroupParameter gt = (GroupParameter) template; if (gt.getParameters() != null && gt.getParameters().length == parameters.length) { for (int i = 0; i < parameters.length; i++) { parameters[i].setTemplate(gt.getParameters()[i]); } } } else if (parameters != null && template == null) { for (int i = 0; i < parameters.length; i++) { parameters[i].setTemplate(null); } } this.template = template; setColor(); } @Override public void setCompulsary(boolean compulsary) { super.setCompulsary(compulsary); if (parameters != null) for (Parameter p : parameters) if (p != null) p.setCompulsary(compulsary); } }