1 package gov.nasa.pds.ltdt.gui;
2
3 import gov.nasa.pds.ltdt.gui.configuration.LTDTKeys;
4 import gov.nasa.pds.ltdt.gui.util.ProcessWaitGlassPane;
5 import gov.nasa.pds.ltdt.gui.util.Utility;
6
7 import java.awt.Color;
8 import java.awt.Dimension;
9 import java.awt.Font;
10 import java.awt.event.ActionEvent;
11 import java.awt.event.ActionListener;
12 import java.io.IOException;
13 import java.util.List;
14 import java.util.Properties;
15
16 import javax.swing.BorderFactory;
17 import javax.swing.Box;
18 import javax.swing.BoxLayout;
19 import javax.swing.JButton;
20 import javax.swing.JLabel;
21 import javax.swing.JList;
22 import javax.swing.JPanel;
23 import javax.swing.JScrollPane;
24 import javax.swing.ListSelectionModel;
25
26 /***
27 * Generate a panel to handle project selection
28 * @author jwang
29 *
30 */
31 public class OpenProjectPane extends JPanel {
32
33 private Box mainBox, box1, box2, box3;
34 private JLabel jlabDescription;
35 public JList jlstProjectNameList;
36 private JScrollPane jsp;
37 private JButton jbtnCancel, jbtnOpen;
38 private ProjectGalleryDialog pd;
39
40 private int status;
41 private List projNames=null;
42
43
44 private Properties props;
45 private MainWindow window;
46
47 /***
48 * Constructor
49 * @param props Tool Properties
50 * @param window Main Window
51 * @param pd
52 */
53 public OpenProjectPane (Properties props, MainWindow window, ProjectGalleryDialog pd) {
54
55 this.props = props;
56 this.window = window;
57
58 this.pd = pd;
59
60 this.setOpaque(true);
61 this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
62
63 this.setBorder(BorderFactory.createEmptyBorder());
64 this.setMaximumSize (new Dimension(300,280));
65
66 constructProjectListPanel ();
67 populateProjectNames();
68 if (projNames!=null) {
69
70 }
71 else {
72 this.jbtnOpen.setSelected(false);
73 this.jbtnCancel.setSelected(true);
74 }
75
76 }
77
78 private void constructProjectListPanel () {
79
80 mainBox = Box.createVerticalBox();
81 mainBox.setBorder(BorderFactory.createEmptyBorder());
82
83 box1 = Box.createHorizontalBox();
84 box1.setBorder(BorderFactory.createEmptyBorder(0, 0, 60, 0));
85
86 jlabDescription = new JLabel();
87 jlabDescription.setText("Open an existing project. ");
88
89 box1.add(jlabDescription);
90
91 box2 = Box.createVerticalBox();
92 box2.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
93
94 jlstProjectNameList = new JList();
95 jlstProjectNameList.setVisibleRowCount(15);
96 jlstProjectNameList.setOpaque(true);
97 jlstProjectNameList.setFont(new Font("monospaced",Font.PLAIN, 12));
98 jlstProjectNameList.setDragEnabled(false);
99 jlstProjectNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
100
101
102 jsp = new JScrollPane(jlstProjectNameList);
103 jsp.setMaximumSize(new Dimension(150, 240));
104
105 box2.add(jsp);
106
107 box3 = Box.createHorizontalBox();
108 box3.setBorder(BorderFactory.createEmptyBorder(60, 280, 0, 0));
109
110 jbtnCancel = new JButton("Cancel");
111 jbtnCancel.addActionListener(new ActionListener() {
112
113 public void actionPerformed(ActionEvent arg0) {
114 cancelOpenProject();
115 }
116
117 });
118
119 jbtnOpen = new JButton("Open");
120 jbtnOpen.setSelected(true);
121
122 jbtnOpen.addActionListener(new ActionListener() {
123
124 public void actionPerformed(ActionEvent e) {
125
126 if (jlstProjectNameList.getSelectedValue()!=null) {
127 openProject();
128 pd.setVisible(false);
129 window.editorPane.jta.setCaretPosition(0);
130 window.editorPane.jta.grabFocus();
131
132 }
133
134
135 }
136
137 });
138
139 box3.add(jbtnCancel);
140 box3.add(jbtnOpen);
141
142 mainBox.add(box1);
143 mainBox.add(box2);
144 mainBox.add(box3);
145
146 this.add(mainBox);
147
148
149 }
150
151 private void populateProjectNames() {
152
153
154
155 try {
156 projNames = Utility.getSortedProjectList(LTDTKeys.LTDTPROPFILE);
157 }
158 catch (IOException e) {}
159
160 this.jlstProjectNameList.setListData(projNames.toArray());
161
162 }
163
164 private void cancelOpenProject() {
165 this.pd.setVisible(false);
166 window.editorPane.jta.setCaretPosition(0);
167 window.editorPane.jta.grabFocus();
168 }
169
170 private int openProject() {
171
172 String selectedProjectName;
173 int status;
174
175 selectedProjectName = (String)this.jlstProjectNameList.getSelectedValue();
176
177 status=ProjectOpen.open(props, window, selectedProjectName, false);
178 if (status==LTDTKeys.SUCCESS)
179 props.setProperty(LTDTKeys.PROJECTALTERED, "false");
180
181 return status;
182 }
183
184
185
186 }