ControlsPane

This class is tasked with controlling the addition of shapes.

Contents

classdef ControlsPane < handle
    % This defines the ControlsPane class.

    %   URL : $URL: $
    %   Log : $Id: ControlsPane.html,v 1.1 2008/07/23 12:51:19 jberg Exp $
    %   Copyright (c) 2008 The MathWorks, Inc.

Class Properties

    properties ( SetAccess = 'private', GetAccess = 'public' )
        pane;           % (javax.swing.JPanel)
    end
    properties ( SetAccess = 'private', GetAccess = 'private' )
        bodyBuilder;    % (BodyBuilder)
    end

    methods

Constructor

        function obj = ControlsPane(bodyBuilder)
            % Load function handles
            fh = svSupport;

            % Build the Gui and set pane
            obj.pane        = obj.build_gui(fh);
            obj.bodyBuilder = bodyBuilder;
        end

SET Methods

        function set.bodyBuilder(obj, in)
            prop_name = 'bodyBuilder';
            prop_type = 'BodyBuilder';
            [valid_flag in] = Validate.SCALAR(in,'type',prop_type);
            if valid_flag
                obj.(prop_name) = in;
            end
        end
        function set.pane(obj, in)
            prop_name = 'pane';
            prop_type = 'javax.swing.JPanel';
            [valid_flag in] = Validate.SCALAR(in,'type',prop_type);
            if valid_flag
                obj.(prop_name) = in;
            end
        end
    end

    methods ( Access = 'private' )

Private HELPER Methods

        function pane = build_gui(obj,fh)
            import java.awt.*;
            import javax.swing.table.*;

            % ==============================================================
            % CONTROL_PANE CONSISTS OF:
            % 1. Button (Add Shape)
            % 2. Popup (Shape Selection)

            % Preferred dimensions
            pref.btnWidth	= 30;
            pref.btnHeight	= 20;
            pref.comboWidth	= 100;
            pref.comboHeight= 20;

            % ==============================================================
            % CONTROL_PANE
            pane = javaObjectEDT('javax.swing.JPanel',GridBagLayout);
            pane.setBorder(javax.swing.BorderFactory.createTitledBorder...
                ('Controls'));

            % 1. Button (Add Shape)
            add_Button = javaObjectEDT('javax.swing.JButton','Add Shape');
            add_Button.setEnabled(true);
            add_Button.setPreferredSize(Dimension...
                (pref.btnWidth,pref.btnHeight))
            gb = GridBagConstraints;
            gb.gridx		= 0;
            gb.gridy		= 0;
            gb.fill			= gb.BOTH;
            gb.insets		= Insets(5,5,5,5);

            set(handle(add_Button, 'CallbackProperties'), ...
                'ActionPerformedCallback',...
                {fh.add_shape_ActionPerformedCallback,obj});

            pane.add(add_Button,gb);

            % 2. Popup (Shape Selection)
            shape_ComboBox = javaObjectEDT('javax.swing.JComboBox');
            shape_ComboBox.setEnabled(true);
            shape_ComboBox.setPreferredSize(Dimension...
                (pref.comboWidth,pref.comboHeight));

            set(handle(shape_ComboBox, 'CallbackProperties'),...
                'ActionPerformedCallback', ...
                {fh.change_active_prototype_ActionPerformedCallback,obj});

            shape_ComboBox.addItem('Shape Assembly'); % this is the default selection
            shape_ComboBox.addItem('Brick');
            shape_ComboBox.addItem('Cone');
            shape_ComboBox.addItem('Cylinder');
            %			shape_ComboBox.addItem('Pyramid');
            shape_ComboBox.addItem('Sphere');
            %			shape_ComboBox.addItem('Tetrahedron');
            shape_ComboBox.addItem('Torus');
            shape_ComboBox.setAlignmentX(shape_ComboBox.LEFT_ALIGNMENT);

            gb = GridBagConstraints;
            gb.gridx		= 0;
            gb.gridy		= 1;
            gb.insets		= Insets(5,5,5,5);

            gb.fill			= gb.BOTH;
            pane.add(shape_ComboBox,gb);
        end
    end
end