1
+ package ts .eclipse .ide .internal .core .resources ;
2
+
3
+ import org .eclipse .core .resources .IProject ;
4
+ import org .eclipse .core .runtime .preferences .IEclipsePreferences .PreferenceChangeEvent ;
5
+
6
+ import ts .TypeScriptException ;
7
+ import ts .eclipse .ide .core .TypeScriptCorePlugin ;
8
+ import ts .eclipse .ide .core .preferences .TypeScriptCorePreferenceConstants ;
9
+ import ts .eclipse .ide .core .resources .AbstractTypeScriptSettings ;
10
+ import ts .eclipse .ide .internal .core .Trace ;
11
+
12
+ class IDEResourcesProjectStatus extends AbstractTypeScriptSettings {
13
+
14
+ private boolean typeScript ;
15
+ private boolean salsa ;
16
+ private IDETypeScriptProject tsProject ;
17
+
18
+ public IDEResourcesProjectStatus (IProject project ) {
19
+ super (project , TypeScriptCorePlugin .PLUGIN_ID );
20
+ setTypeScript (
21
+ isMatchPaths (super .getStringPreferencesValue (TypeScriptCorePreferenceConstants .NATURE_TYPESCRIPT_PATHS ,
22
+ TypeScriptCorePreferenceConstants .DEFAULT_NATURE_TYPESCRIPT_PATHS )));
23
+ setSalsa (isMatchPaths (super .getStringPreferencesValue (TypeScriptCorePreferenceConstants .NATURE_SALSA_PATHS ,
24
+ TypeScriptCorePreferenceConstants .DEFAULT_NATURE_SALSA_PATHS )));
25
+ update ();
26
+ }
27
+
28
+ private void update () {
29
+ if (tsProject != null ) {
30
+ try {
31
+ tsProject .dispose ();
32
+ } catch (TypeScriptException e ) {
33
+ Trace .trace (Trace .SEVERE , "Error while disposing TypeScript project" , e );
34
+ }
35
+ }
36
+ if (isSalsa () || isTypeScript ()) {
37
+ this .tsProject = new IDETypeScriptProject (getProject ());
38
+ } else {
39
+ this .tsProject = null ;
40
+ }
41
+ }
42
+
43
+ boolean isTypeScript () {
44
+ return typeScript ;
45
+ }
46
+
47
+ void setTypeScript (boolean typeScript ) {
48
+ this .typeScript = typeScript ;
49
+ }
50
+
51
+ boolean isSalsa () {
52
+ return salsa ;
53
+ }
54
+
55
+ void setSalsa (boolean salsa ) {
56
+ this .salsa = salsa ;
57
+ }
58
+
59
+ IDETypeScriptProject getTypeScriptProject () {
60
+ return tsProject ;
61
+ }
62
+
63
+ void setTypeScriptProject (IDETypeScriptProject tsProject ) {
64
+ this .tsProject = tsProject ;
65
+ }
66
+
67
+ @ Override
68
+ public void preferenceChange (PreferenceChangeEvent event ) {
69
+ if (TypeScriptCorePreferenceConstants .NATURE_TYPESCRIPT_PATHS .equals (event .getKey ())) {
70
+ setTypeScript (isMatchPaths (event .getNewValue ().toString ()));
71
+ } else if (TypeScriptCorePreferenceConstants .NATURE_SALSA_PATHS .equals (event .getKey ())) {
72
+ setSalsa (isMatchPaths (event .getNewValue ().toString ()));
73
+ }
74
+ }
75
+
76
+ private boolean isMatchPaths (String paths ) {
77
+ String [] p = paths .split ("," );
78
+ for (int i = 0 ; i < p .length ; i ++) {
79
+ if (getProject ().getFile (p [i ]).exists ()) {
80
+ return true ;
81
+ }
82
+ }
83
+ return false ;
84
+ }
85
+
86
+ }
0 commit comments