이미지09
Coding Story/ExtJS

[ ExtJS ] Toolbar 를 생성하고 위치를 지정하기

반응형

 

 

( 현 포스팅은 이전 포스팅 "[ ExtJS ] Button을 만들고 Event Listeners 달기." 에서 사용한 test.html 파일을 사용한다. )

 

 

 

 

이전 포스팅에선 간단한 레이아웃에 버튼을 달고 이벤트를 적용시켜보았다.

 

이번엔 자주 이용하는 기능을 버튼 등으로 만들어 나란히 모아놓은 메뉴바인 Toolbar 를 추가해,

 

각 버튼을 좀 더 작관적으로 나누고 위치를 지정해보자.

 

 

ExtJS 는 panel 에 Toolbar 를 만드는 속성으로 다음과 같은 방법 등을 지원한다.

1. dockedItems
2. Xbar

 

이제 순서대로 사용해 Toolbar 를 만들어 보자.

 

현재 기존의 test.html 의 코드는 아래와 같다.

 

 

 

 

test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ExtJS Test</title>
    <link href="../classic/theme-crisp/resources/theme-crisp-all.css" rel="stylesheet">
    <script type="text/javascript" src="../ext-all.js"></script>
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                layout : 'vbox',
                items:[
                    {
                        xtype: 'textfield',
                        fieldLabel: '이름'
                    },
                    {
                        xtype: 'textfield',
                        fieldLabel: '성별'
                    },
                    {
                        xtype: 'textfield',
                        fieldLabel: '생년월일'
                    },
                    {
                        xtype: 'container',
                        layout: 'hbox',
                        items: [
                            {
                                xtype: 'button',
                                text: 'First Button',
                                handler: function() {
                                    Ext.Msg.alert("First Button Click", "첫 번째 버튼 클릭");
                                }
                            },
                            {
                                xtype: 'button',
                                text: 'Second Button',
                                listeners: {
                                    click: function() {
                                        Ext.Msg.alert("Second Button Click", "두 번째 버튼 클릭");
                                    }
                                }
                            }
                        ]
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

 

 

 

dockedItems

ExtJS 는 도구를 모아놓은 영역을 기본적으로 제공한다.

 

사용법은 아래와 같다.

dockedItems: [
    {
        xtype: 'toolbar',
        dock: 'top', //top, left, right, bottom
        items: [
            {
                xtype: ...
                text: ...
            }
        ]
    }
]

 

 

이를 기존의 test.html 에서 버튼을 제거하고 아래와 같이 적용한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ExtJS Test</title>
    <!-- <link href="../classic/theme-classic/resources/theme-classic-all.css" rel="stylesheet"> -->
    <link href="../classic/theme-crisp/resources/theme-crisp-all.css" rel="stylesheet">
    <script type="text/javascript" src="../ext-all.js"></script>
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                items:[
                    {
                        xtype: 'textfield',
                        fieldLabel: '이름'
                    },
                    {
                        xtype: 'textfield',
                        fieldLabel: '성별'
                    },
                    {
                        xtype: 'textfield',
                        fieldLabel: '생년월일'
                    }
                ],
                dockedItems: [
                    {
                        xtype: 'toolbar',
                        dock: 'top',
                        items: [
                            {
                                xtype: 'button',
                                text: 'Top Button'
                            }
                        ]
                    },
                    {
                        xtype: 'toolbar',
                        dock: 'left',
                        items: [
                            {
                                xtype: 'button',
                                text: 'Left Button'
                            }
                        ]
                    },
                    {
                        xtype: 'toolbar',
                        dock: 'right',
                        items: [
                            {
                                xtype: 'button',
                                text: 'Right Button'
                            }
                        ]
                    },
                    {
                        xtype: 'toolbar',
                        dock: 'bottom',
                        items: [
                            {
                                xtype: 'button',
                                text: 'Bottom Button 1'
                            },
                            {
                                xtype: 'button',
                                text: 'Bottom Button 2'
                            }
                        ]
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

위 처럼 xtype 으로 toolbar 를 주어 생성할 수 있고,

 

dock 으로 top(상), bottom(하), left(좌), right(우) 로 툴바의 위치를 지정할 수 있다.

 

 

실행결과는 아래와 같다.

포스팅 이미지 01

 

이전 포스팅과 달리 Toolbar 영역이 생겼음을 확인할 수 있다.

 

그럼 다음으로는 Xbar 를 이용해서 toolbar 를 생성해보자.

 

 

 

 

Xbar

위에서 다룬 dockedItems 가 도구 모음의 영역이며, 후에 dock 으로 위치를 배정한다는걸 알았다.

 

반면 Xbar 는 처음부터 각 위치가 지정되있는 toolbar 를 제공한다.

 

Xbar 의 종류로는 tbar, bbar, lbar, rbar, fbar 가 있고 하나하나 살펴보도록 하자.

 

먼저, test.html 의 dockedItems 부분을 지우고 bbar 부터 적용해보자.

 

 

 

 

bbar

Bottom Bar 를 의미하며 컨텐츠 내 하단에 위치하는 Toolbar 이다.

<!DOCTYPE html>
<html lang="en">
<head>
    .
    .
    .
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                items:[
                    .
                    .
                    .
                ],
                
                //Bottom Bar
                bbar: [
                    {
                        xtype: 'button',
                        text: 'Bottom Button'
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

 

bbar 실행 결과

포스팅 이미지 02

 

 

 

fbar

Footer Bar 를 의미하며 컨텐츠 내 하단에 위치하는 점에서 bbar 와 거의 동일하지만,

 

bbar 와는 달리 기본으로 오른쪽 배치와 style 이 적용되어져 있다.

<!DOCTYPE html>
<html lang="en">
<head>
    .
    .
    .
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                items:[
                    .
                    .
                    .
                ],
                
                //Footer Bar
                fbar: [
                    {
                        xtype: 'button',
                        text: 'Footer Button'
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

 

fbar 실행 결과

포스팅 이미지 03

 

 

 

 

tbar, lbar, rbar

앞에서부터 순서대로 Top Bar, Left Bar, Right Bar 를 의미하며,

 

컨텐츠 내 상단, 좌측, 우측에 위치한 Toolbar 이다.

<!DOCTYPE html>
<html lang="en">
<head>
    .
    .
    .
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                items:[
                    .
                    .
                    .
                ],
                
                //Top Bar
                tbar: [
                    {
                        xtype: 'button',
                        text: 'Top Button'
                    }
                ],
                
                //Left Bar
                lbar: [
                    {
                        xtype: 'button',
                        text: 'Left Button'
                    }
                ],
                
                //Right Bar
                rbar: [
                    {
                        xtype: 'button',
                        text: 'Right Button'
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

 

tbar, lbar, rbar 실행 화면

포스팅 이미지 04

 

 

이전 포스팅과 동일하게 버튼에 이벤트도 달아보자.

 

위 버튼들 중 LeftButton 에만 이벤트를 걸어본다.

<!DOCTYPE html>
<html lang="en">
<head>
    .
    .
    .
    <script type="text/javascript">
        Ext.onReady(function(){
            Ext.create("Ext.panel.Panel",{
                renderTo : Ext.getBody(),
                items:[
                    .
                    .
                    .
                ],
                
                //Top Bar
                tbar: [
                    {
                        xtype: 'button',
                        text: 'Top Button'
                    }
                ],
                
                //Left Bar
                lbar: [
                    {
                        xtype: 'button',
                        text: 'Left Button',
                        //event 추가
                        listeners: {
                            click: function() {
                                Ext.Msg.alert("Left Button", "왼쪽 버튼을 클릭했음");
                            }
                        }
                    }
                ],
                
                //Right Bar
                rbar: [
                    {
                        xtype: 'button',
                        text: 'Right Button'
                    }
                ]
            });
        });
    </script>
</head>
<body>
    
</body>
</html>

 

 

그러고나서 Left Button 을 클릭하면 아래처럼 정상적으로 이벤트가 발생한다.

포스팅 이미지 05

 

 

 

 

 

 

 

반응형