1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*******************************************************************************
* Copyright (c) 2006 Elphel, Inc and Excelsior, LLC.
* This file is a part of Eclipse/VDT plug-in.
* Eclipse/VDT plug-in is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* Eclipse/VDT plug-in is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with Eclipse VDT plug-in; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*******************************************************************************/
package com.elphel.vdt.ui.tools.params;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.swt.widgets.Composite;
import com.elphel.vdt.Txt;
import com.elphel.vdt.core.tools.params.Parameter;
import com.elphel.vdt.ui.MessageUI;
import com.elphel.vdt.ui.options.component.BrowseableField;
import com.elphel.vdt.ui.options.component.DirComponent;
import com.elphel.vdt.ui.tools.LaunchConfigurationTab;
public class DirTabComponent extends AbstractTabComponent {
public DirTabComponent( LaunchConfigurationTab tab
, Parameter toolParameter )
{
super(tab, new DirComponent(toolParameter));
}
public void createControl(Composite parent) {
super.createControl(parent);
WidgetListener listener = new WidgetListener();
getLocationField().addSelectionListener(listener);
getLocationField().addModifyListener(listener);
}
private BrowseableField getLocationField() {
return ((DirComponent)component).getLocationField();
}
public void initializeFrom(ILaunchConfiguration configuration) {
String location= "";
try {
location = configuration.getAttribute(ATTR_NAME_VALUE, "");
} catch (CoreException ce) {
MessageUI.showErrorMessage(ce, Txt.s("LaunchTab.Error.ReadConfiguration"));
}
getLocationField().getBrowsedNameField().setText(location);
}
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
String location = getLocationField().getBrowsedNameField().getText().trim();
setAttributes(configuration, location);
}
public boolean isValid(boolean newConfig) {
String location = getLocationField().getBrowsedNameField().getText().trim();
if (location.length() < 1) {
if (newConfig) {
tab.setErrorMessage(null);
tab.setMessage(Txt.s("LaunchTab.File.Message.Info", component.getParam().getLabel()));
} else {
tab.setErrorMessage(Txt.s("LaunchTab.Location.Error.CannotBeEmpty", component.getParam().getLabel()));
tab.setMessage(null);
}
return false;
}
File file = new File(location);
if (!file.exists()) { // The file does not exist.
if (!newConfig) {
tab.setErrorMessage(Txt.s("LaunchTab.Location.Error.DoesNotExist", component.getParam().getLabel()));
}
return false;
}
if (!file.isDirectory()) {
if (!newConfig) {
tab.setErrorMessage(Txt.s("LaunchTab.Location.Message.IsNotDir", component.getParam().getLabel()));
}
return false;
}
return true;
} // isValid()
} // class DirTabComponent