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();