View Javadoc

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  			// do nothing
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) {} // do nothing
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 }