View Javadoc

1   /**********************************************
2    * Copyright (C) 2011 Lukas Laag
3    * This file is part of svgreal.
4    * 
5    * svgreal is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * svgreal is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   * 
15   * You should have received a copy of the GNU General Public License
16   * along with svgreal.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  package org.vectomatic.svg.edit.client.inspector;
19  
20  import org.vectomatic.svg.edit.client.gxt.binding.FormPanelUtils;
21  import org.vectomatic.svg.edit.client.model.AbstractModel;
22  import org.vectomatic.svg.edit.client.model.ModelCategory;
23  
24  import com.extjs.gxt.ui.client.binding.FormBinding;
25  import com.extjs.gxt.ui.client.util.Format;
26  import com.extjs.gxt.ui.client.widget.Component;
27  import com.extjs.gxt.ui.client.widget.form.FormPanel;
28  import com.google.gwt.core.client.GWT;
29  
30  /**
31   * Generic inspector section. Its content is a form
32   * dynamically generated from a model category
33   * @author laaglu
34   * @param <M>
35   * An SVG model
36   */
37  public class FormInspectorSection<M extends AbstractModel<?>> implements IInspectorSection<M> {
38  	private FormPanel formPanel;
39  	private FormBinding formBinding;
40  	private ModelCategory category;
41  
42  	public FormInspectorSection(FormPanel formPanel, ModelCategory category) {
43  		this.formPanel = formPanel;
44  		this.category = category;
45  		formPanel.setHeading(Format.capitalize(category.getDescription()));
46  		formPanel.setAnimCollapse(false);
47  		formBinding = new FormBinding(formPanel, false);
48  		FormPanelUtils.createFieldBindings(formPanel, formBinding);
49  	}
50  	@Override
51  	public String toString() {
52  		StringBuilder builder = new StringBuilder("SVGInspectorFormSection(");
53  		builder.append(category);
54  		builder.append(")");
55  		return builder.toString();
56  	}
57  	public Component getPanel() {
58  		return formPanel;
59  	}
60  	public void bind(M model) {
61  		GWT.log("FormInspectorSection.bind(" + model + ")");
62  		formBinding.setStore(model.getStore());
63  		formBinding.bind(model);
64  	}
65  	public void unbind() {
66  		formBinding.unbind();
67  		formBinding.setStore(null);
68  	}
69  }