]> code.citadel.org Git - citadel.git/blob - shaggy/mainPanel.java
New tabbed dialog API. This will be used in something later...
[citadel.git] / shaggy / mainPanel.java
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4 import java.util.*;
5
6 public class mainPanel extends JPanel {
7     JComboBox   jcb;
8     DefaultListModel    newLM, seenLM;
9     roomMap     rooms;
10
11     boolean     jcb_update = false;
12
13     public mainPanel() {
14         setLayout( new BorderLayout() );
15
16         JPanel  p = new JPanel();
17         p.setLayout( new BorderLayout() );
18         /*      p.setBorder( BorderFactory.createTitledBorder( 
19                 BorderFactory.createEtchedBorder(), "Cmds" ) ); */
20
21         VertPanel       vp = new VertPanel();
22         p.add( "Center", vp );
23         JButton b;
24
25         vp.add( b = new JButton( "Next Room" ) );
26         b.addActionListener( new ActionListener() {
27             public void actionPerformed( ActionEvent e ) {
28                 citadel.me.enterRoom( rooms.nextNewRoom() );
29             }});
30
31         vp.add( b = new JButton( "Goto Room" ) );
32         b.addActionListener( new ActionListener() {
33             public void actionPerformed( ActionEvent e ) {
34               citadel.me.enterRoom();
35             }});
36
37         vp.add( b = new JButton( "Page User" ) );
38         b.addActionListener( new ActionListener() {
39             public void actionPerformed( ActionEvent e ) {
40                 new pageUserWindow();
41             }});
42
43         vp.add( b = new JButton( "Who Online" ) );
44         b.addActionListener( new ActionListener() {
45             public void actionPerformed( ActionEvent e ) {
46                 new whoOnlineWindow();
47             }});
48
49         vp.add( b = new JButton( "Options" ) );
50         b.addActionListener( new ActionListener() {
51             public void actionPerformed( ActionEvent e ) {
52             }});
53
54         b.setEnabled( false );
55
56         vp.add( b = new JButton( "Server Info" ) );
57         b.addActionListener( new ActionListener() {
58             public void actionPerformed( ActionEvent e ) {
59             }});
60
61         b.setEnabled( false );
62
63         vp.add( b = new JButton( "Logoff" ) );
64         b.addActionListener( new ActionListener() {
65             public void actionPerformed( ActionEvent e ) {
66                 citadel.me.logoff();
67             } } );
68     
69         add( "West", p );
70
71         p = new JPanel();
72         p.setLayout( new BorderLayout() );
73
74         PairPanel       pp = new PairPanel();
75         jcb = new JComboBox();
76         jcb.addActionListener( new ActionListener() {
77             public void actionPerformed( ActionEvent e ) {
78                 if( !jcb_update )
79                     updateLists( (String)jcb.getSelectedItem() );
80             } } );
81         
82         pp.addLeft( new JLabel( "Floor: " ) );
83         pp.addRight( jcb );
84
85         p.add( "North", pp );
86
87         JPanel  ppp = new JPanel();
88         ppp.setLayout( new GridLayout( 1, 0 ) );
89         newLM = makeList( "New Rooms", ppp );
90         seenLM = makeList( "Old Rooms", ppp );
91
92         p.add( "Center", ppp );
93
94         add( "Center", p );
95     }
96
97     public DefaultListModel makeList( String name, JPanel pp ) {
98         final JList     jl;
99         DefaultListModel        lm;
100
101         JPanel  p = new JPanel();
102         p.setLayout( new BorderLayout() );
103         p.setBorder( BorderFactory.createTitledBorder( 
104                                                       BorderFactory.createEtchedBorder(), name ) );
105
106         lm = new DefaultListModel();
107
108         p.add( "Center", new JScrollPane( jl = new JList(lm) ) );
109
110         pp.add( p );
111
112         jl.addMouseListener( new MouseAdapter() {
113             public void mouseClicked( MouseEvent e ) {
114                 String  what = (String)jl.getSelectedValue();
115                 if( what == null ) return;
116
117                 if( e.getClickCount() == 2 )
118                     citadel.me.enterRoom( what );
119             }
120         } );
121
122         return lm;
123     } 
124
125     public void refresh() {
126         rooms = new roomMap( this );
127         citadel.me.rooms = rooms;
128         citadel.me.networkEvent( "LFLR", new CallBack() {
129             public void run( citReply r ) {
130                 rooms.floors( r );
131                 jcb_update = true;
132                 if( jcb.getModel().getSize() > 0 )
133                     jcb.removeAllItems();
134                 for( Enumeration e = rooms.f_list.elements(); e.hasMoreElements(); ) {
135                     floor       f = (floor)e.nextElement();
136                     jcb.addItem( f.name() );
137                 }
138                 jcb_update = false;
139                 setFloor( rooms.getFloor() );
140             } } );
141
142         citadel.me.networkEvent( "LKRN", new CallBack() {
143             public void run( citReply r ) {
144                 rooms.new_rooms( r );
145             } } );
146
147         citadel.me.networkEvent( "LKRO", new CallBack() {
148             public void run( citReply r ) {
149                 rooms.old_rooms( r );
150
151                 setFloor( rooms.getFloor() );
152                 updateLists( rooms.getFloor().name );
153             } } );
154     }
155
156     public void setFloor( String flr ) {
157         if( flr == null ) return;
158         setFloor( rooms.getFloor( flr ) );
159     }
160     
161     public void setFloor( floor f ) {
162         if( f == null ) return;
163         jcb.setSelectedItem( f.name() );
164     }
165
166     public void updateLists( String name  ) {
167         floor   f = rooms.getFloor( name );
168         if( f == null ) return;
169
170         rooms.cur_floor = f;
171         newLM.removeAllElements();
172         seenLM.removeAllElements();
173         for( Enumeration e = f.rooms.elements(); e.hasMoreElements(); ) {
174             room        rm = (room)e.nextElement();
175             if( rm.hasNew() )
176                 newLM.addElement( rm.name () );
177             else
178                 seenLM.addElement( rm.name() );
179         }
180     }
181 }