diff --git a/web.core/nbproject/project.xml b/web.core/nbproject/project.xml
--- a/web.core/nbproject/project.xml
+++ b/web.core/nbproject/project.xml
@@ -254,6 +254,7 @@ made subject to such option by the copyr
3
+ 3.1
diff --git a/web.core/src/org/netbeans/modules/web/core/jsploader/BaseJspEditorSupport.java b/web.core/src/org/netbeans/modules/web/core/jsploader/BaseJspEditorSupport.java
--- a/web.core/src/org/netbeans/modules/web/core/jsploader/BaseJspEditorSupport.java
+++ b/web.core/src/org/netbeans/modules/web/core/jsploader/BaseJspEditorSupport.java
@@ -59,6 +59,7 @@ import javax.swing.text.EditorKit;
import javax.swing.text.EditorKit;
import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.modules.web.core.palette.JSPPaletteFactory;
+import org.netbeans.modules.web.jsps.parserapi.TldChangeEvent;
import org.openide.filesystems.FileUtil;
import org.openide.text.DataEditorSupport;
@@ -83,13 +84,16 @@ import org.openide.util.NbBundle;
import org.openide.loaders.DataObject;
import org.netbeans.modules.web.api.webmodule.WebModule;
+import org.netbeans.modules.web.jsps.parserapi.TldChangeListener;
+import org.netbeans.modules.web.jsps.parserapi.JspParserFactory;
import org.netbeans.spi.palette.PaletteController;
import org.openide.util.UserCancelException;
import org.openide.util.WeakListeners;
class BaseJspEditorSupport extends DataEditorSupport implements EditCookie, EditorCookie.Observable, OpenCookie,
- LineCookie, CloseCookie, PrintCookie, PropertyChangeListener {
+ LineCookie, CloseCookie, PrintCookie, PropertyChangeListener, TldChangeListener {
+ private static final Logger LOGGER = Logger.getLogger(BaseJspEditorSupport.class.getName());
private static final int AUTO_PARSING_DELAY = 2000;//ms
/** Timer which countdowns the auto-reparsing time. */
@@ -119,7 +123,6 @@ class BaseJspEditorSupport extends DataE
if(sup != null) {
sup.cancelParsingTask();
}
-
return super.close();
}
@@ -174,6 +177,10 @@ class BaseJspEditorSupport extends DataE
// register class path listener
ClassPath cp = ClassPath.getClassPath(wmRoot, ClassPath.EXECUTE);
cp.addPropertyChangeListener(WeakListeners.propertyChange(this, cp));
+
+ // register jsp parser listener
+ LOGGER.fine("adding tldChangeListener");
+ JspParserFactory.getJspParser().addTldChangeListener(this);
}
}
@@ -182,6 +189,21 @@ class BaseJspEditorSupport extends DataE
restartTimer(false);
}
+ public void tldChange(TldChangeEvent evt) {
+ FileObject fo = getDataObject().getPrimaryFile();
+ WebModule webModule = getWebModule(fo);
+ if (evt.getWebModule().equals(webModule)) {
+ LOGGER.fine("tldChange => restarting timer");
+ restartTimer(false);
+ TagLibParseSupport sup = getDataObject().getCookie(TagLibParseSupport.class);
+ if (sup != null) {
+ sup.setDocumentDirty(true);
+ }
+ } else {
+ LOGGER.fine("tldChange => not restarting timer (not my webmodule)");
+ }
+ }
+
private WebModule getWebModule(FileObject fo){
WebModule wm = WebModule.getWebModule(fo);
if (wm != null){
@@ -268,7 +290,10 @@ class BaseJspEditorSupport extends DataE
/** Notify about the editor closing.
*/
- protected void notifyClose() {}
+ protected void notifyClose() {
+ LOGGER.fine("closing => removing tldChangeListener");
+ JspParserFactory.getJspParser().removeTldChangeListener(this);
+ }
/** Notify that parsing task has been finished; some dependent data may now
* be refreshed from up-to-date parsing info */
@@ -380,7 +405,7 @@ class BaseJspEditorSupport extends DataE
}
}
catch (javax.swing.text.BadLocationException e){
- Logger.getLogger("global").log(Level.INFO, null, e);
+ LOGGER.log(Level.INFO, null, e);
}
}
super.saveDocument();