Lines 54-60
Link Here
|
54 |
import java.nio.charset.UnsupportedCharsetException; |
54 |
import java.nio.charset.UnsupportedCharsetException; |
55 |
import java.util.*; |
55 |
import java.util.*; |
56 |
import java.util.ArrayList; |
56 |
import java.util.ArrayList; |
57 |
import java.util.concurrent.CopyOnWriteArrayList; |
57 |
import java.util.concurrent.*; |
58 |
import java.util.logging.Level; |
58 |
import java.util.logging.Level; |
59 |
import java.util.logging.Logger; |
59 |
import java.util.logging.Logger; |
60 |
import javax.swing.ButtonModel; |
60 |
import javax.swing.ButtonModel; |
Lines 95-100
Link Here
|
95 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
95 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; |
96 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; |
96 |
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; |
97 |
import org.netbeans.api.j2ee.core.Profile; |
97 |
import org.netbeans.api.j2ee.core.Profile; |
|
|
98 |
import org.netbeans.api.progress.ProgressHandle; |
99 |
import org.netbeans.api.progress.ProgressRunnable; |
100 |
import org.netbeans.api.progress.ProgressUtils; |
98 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; |
101 |
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; |
99 |
import org.netbeans.modules.java.api.common.SourceRoots; |
102 |
import org.netbeans.modules.java.api.common.SourceRoots; |
100 |
import org.netbeans.modules.java.api.common.ant.UpdateHelper; |
103 |
import org.netbeans.modules.java.api.common.ant.UpdateHelper; |
Lines 117-122
Link Here
|
117 |
import org.openide.modules.SpecificationVersion; |
120 |
import org.openide.modules.SpecificationVersion; |
118 |
import org.openide.util.Exceptions; |
121 |
import org.openide.util.Exceptions; |
119 |
import org.openide.util.NbBundle; |
122 |
import org.openide.util.NbBundle; |
|
|
123 |
import org.openide.util.NbBundle.Messages; |
120 |
import org.openide.util.Parameters; |
124 |
import org.openide.util.Parameters; |
121 |
import org.openide.util.RequestProcessor; |
125 |
import org.openide.util.RequestProcessor; |
122 |
import org.openide.util.Task; |
126 |
import org.openide.util.Task; |
Lines 530-553
Link Here
|
530 |
DDHelper.createWebXml(j2eeProfile, webInf); |
534 |
DDHelper.createWebXml(j2eeProfile, webInf); |
531 |
} |
535 |
} |
532 |
|
536 |
|
533 |
if (newExtenders != null) { |
537 |
// handle new and existing extenders |
534 |
for (int i = 0; i < newExtenders.size(); i++) { |
538 |
handleExtenders(newExtenders, existingExtenders); |
535 |
((WebModuleExtender) newExtenders.get(i)).extend(project.getAPIWebModule()); |
|
|
536 |
} |
537 |
newExtenders.clear(); |
538 |
project.resetTemplates(); |
539 |
} |
540 |
|
541 |
// try to save already included extenders |
542 |
if (existingExtenders != null) { |
543 |
for (WebModuleExtender webModuleExtender : existingExtenders) { |
544 |
if (webModuleExtender instanceof WebModuleExtender.Savable) { |
545 |
((WebModuleExtender.Savable) webModuleExtender).save(project.getAPIWebModule()); |
546 |
} |
547 |
} |
548 |
existingExtenders.clear(); |
549 |
project.resetTemplates(); |
550 |
} |
551 |
|
539 |
|
552 |
// ui logging of the added frameworks |
540 |
// ui logging of the added frameworks |
553 |
if ((addedFrameworkNames != null) && (addedFrameworkNames.size() > 0)) { |
541 |
if ((addedFrameworkNames != null) && (addedFrameworkNames.size() > 0)) { |
Lines 1027-1033
Link Here
|
1027 |
Parameters.notNull("al", al); //NOI18N |
1015 |
Parameters.notNull("al", al); //NOI18N |
1028 |
optionListeners.remove(al); |
1016 |
optionListeners.remove(al); |
1029 |
} |
1017 |
} |
1030 |
|
1018 |
|
|
|
1019 |
@Messages({ |
1020 |
"WebProjectProperties.label.adding.project.frameworks=Adding project frameworks", |
1021 |
"WebProjectProperties.label.saving.project.frameworks=Saving project frameworks" |
1022 |
}) |
1023 |
private void handleExtenders(final List newExtenders, final List<WebModuleExtender> existingExtenders) { |
1024 |
if (newExtenders != null) { |
1025 |
RequestProcessor.getDefault().post(new Runnable() { |
1026 |
|
1027 |
@Override |
1028 |
public void run() { |
1029 |
ProgressUtils.showProgressDialogAndRun(new Runnable() { |
1030 |
|
1031 |
@Override |
1032 |
public void run() { |
1033 |
if (newExtenders != null) { |
1034 |
for (int i = 0; i < newExtenders.size(); i++) { |
1035 |
((WebModuleExtender) newExtenders.get(i)).extend(project.getAPIWebModule()); |
1036 |
} |
1037 |
newExtenders.clear(); |
1038 |
project.resetTemplates(); |
1039 |
} |
1040 |
|
1041 |
saveExistingExtenders(existingExtenders); |
1042 |
} |
1043 |
}, Bundle.WebProjectProperties_label_adding_project_frameworks()); |
1044 |
} |
1045 |
}); |
1046 |
} else if (existingExtenders != null) { |
1047 |
RequestProcessor.getDefault().post(new Runnable() { |
1048 |
|
1049 |
@Override |
1050 |
public void run() { |
1051 |
final FutureTask<Void> future = new FutureTask<Void>(new Callable<Void>() { |
1052 |
@Override |
1053 |
public Void call() throws Exception { |
1054 |
saveExistingExtenders(existingExtenders); |
1055 |
return null; |
1056 |
} |
1057 |
}); |
1058 |
try { |
1059 |
future.run(); |
1060 |
future.get(300, TimeUnit.MILLISECONDS); |
1061 |
} catch (InterruptedException ex) { |
1062 |
Exceptions.printStackTrace(ex); |
1063 |
} catch (ExecutionException ex) { |
1064 |
Exceptions.printStackTrace(ex); |
1065 |
} catch (TimeoutException ex) { |
1066 |
// timeouted |
1067 |
ProgressUtils.showProgressDialogAndRun(new Runnable() { |
1068 |
@Override |
1069 |
public void run() { |
1070 |
try { |
1071 |
future.get(); |
1072 |
} catch (InterruptedException ex) { |
1073 |
Exceptions.printStackTrace(ex); |
1074 |
} catch (ExecutionException ex) { |
1075 |
Exceptions.printStackTrace(ex); |
1076 |
} |
1077 |
} |
1078 |
}, Bundle.WebProjectProperties_label_saving_project_frameworks()); |
1079 |
} |
1080 |
} |
1081 |
}); |
1082 |
} |
1083 |
} |
1084 |
|
1085 |
private void saveExistingExtenders(List<WebModuleExtender> existingExtenders) { |
1086 |
// try to save already included extenders |
1087 |
if (existingExtenders != null) { |
1088 |
for (WebModuleExtender webModuleExtender : existingExtenders) { |
1089 |
if (webModuleExtender instanceof WebModuleExtender.Savable) { |
1090 |
((WebModuleExtender.Savable) webModuleExtender).save(project.getAPIWebModule()); |
1091 |
} |
1092 |
} |
1093 |
existingExtenders.clear(); |
1094 |
project.resetTemplates(); |
1095 |
} |
1096 |
} |
1097 |
|
1031 |
private static class CallbackImpl implements J2EEProjectProperties.Callback { |
1098 |
private static class CallbackImpl implements J2EEProjectProperties.Callback { |
1032 |
|
1099 |
|
1033 |
private WebProject project; |
1100 |
private WebProject project; |