Package com.nexirius.framework.dataeditor

Source Code of com.nexirius.framework.dataeditor.StructEditor

//{HEADER
/**
* This class is part of jnex 'Nexirius Application Framework for Java'
* Copyright (C) Nexirius GmbH, CH-4450 Sissach, Switzerland (www.nexirius.ch)
*
* <p>This library is free software; you can redistribute it and/or<br>
* modify it under the terms of the GNU Lesser General Public<br>
* License as published by the Free Software Foundation; either<br>
* version 2.1 of the License, or (at your option) any later version.</p>
*
* <p>This library is distributed in the hope that it will be useful,<br>
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU<br>
* Lesser General Public License for more details.</p>
*
* <p>You should have received a copy of the GNU Lesser General Public<br>
* License along with this library; if not, write to the Free Software<br>
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</p>
* </blockquote>
*
* <p>
* Nexirius GmbH, hereby disclaims all copyright interest in<br>
* the library jnex' 'Nexirius Application Framework for Java' written<br>
* by Marcel Baumann.</p>
*/
//}HEADER
package com.nexirius.framework.dataeditor;

import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.datamodel.DataModelCommand;
import com.nexirius.framework.datamodel.DataModelCommandVector;
import com.nexirius.framework.datamodel.StructModel;
import com.nexirius.framework.dataviewer.StructViewer;
import com.nexirius.framework.dataviewer.ViewerFactory;

import javax.swing.*;

/**
* This viewer is designed to edit StructModel data. The default component
* is a single vertical column of all the children editors with titled borders (filed names)
*
* @author Marcel Baumann
*/
public class StructEditor extends StructViewer {



    public static final String editorName = "StructEditor";

    /**
     * Creates an instance and initialises its associated data model
     */
    public StructEditor(StructModel model) {
        super(model);
    }

    /**
     * Returns true
     */
    public boolean isEditor() {
        return true;
    }

    /**
     * Creates a field value component (data model editor for a specific child)
     *
     * @param dm The child data model which will be used to create an editor component.
     */
    public JComponent createFieldValue(DataModel dm)
            throws Exception {
        JComponent ret = getFactory().createDefaultEditor(dm).getJComponent();

        ret.setName(dm.getFieldName());

        return ret;
    }

    /**
     * Only for debugging
     */
    public String getViewerName() {
        return editorName;
    }

    /**
     * Calls super.update() and attaches a button panel to the struct panel which contains
     * all the methods which are defined for the associated data model
     */
    public void update() {
        super.update();

        // eventually add the buttons for the methods
        if (getLayout() == null && getDataModel().hasMethods()) {
            DataModelCommandVector v = getDataModel().getMethods();
/*
      ArrayPanel button_panel = new ArrayPanel(true);

      for (DataModelCommand m = v.firstItem(); m != null; m = v.nextItem()) {
        try {
          button_panel.add(getFactory().createDefaultEditor(m).getJComponent());
        }
        catch (Exception ex)
        {
          //FIX
          ex.printStackTrace();
        }
      }

*/
            JPanel button_panel = createButtonPanel(getFactory(), v, true);

            add(button_panel);
        }
    }

    public static JPanel createButtonPanel(ViewerFactory factory, DataModelCommandVector v, boolean horizontal) {
        JPanel button_panel = new JPanel();

        button_panel.setOpaque(false);
        button_panel.setLayout(new BoxLayout(button_panel, (horizontal ? BoxLayout.X_AXIS : BoxLayout.Y_AXIS)));

        if (horizontal) {
            button_panel.add(Box.createHorizontalGlue());
        }

        for (DataModelCommand m = v.firstItem(); m != null; m = v.nextItem()) {
            try {
                button_panel.add(factory.createDefaultEditor(m).getJComponent());
                if (horizontal) {
                    button_panel.add(Box.createHorizontalGlue());
                }
            } catch (Exception ex) {
                //FIX
                ex.printStackTrace();
            }
        }
        return button_panel;
    }
}
TOP

Related Classes of com.nexirius.framework.dataeditor.StructEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.