|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.web.dd.wizards; import java.awt.Component; import java.io.IOException; import java.util.Collections; import java.util.NoSuchElementException; import java.util.Set; import java.text.MessageFormat; import javax.swing.JComponent; import javax.swing.event.ChangeListener; import org.openide.filesystems.FileObject; import org.openide.WizardDescriptor; import org.openide.cookies.OpenCookie; import org.openide.cookies.SaveCookie; import org.openide.loaders.*; import org.openide.util.NbBundle; import org.openide.ErrorManager; import org.openide.NotifyDescriptor; import org.openide.DialogDisplayer; import org.netbeans.spi.project.ui.templates.support.Templates; import org.netbeans.api.project.Project; import org.netbeans.api.project.Sources; import org.netbeans.api.project.SourceGroup; import org.netbeans.modules.web.api.webmodule.WebProjectConstants; //import org.netbeans.modules.web.api.webmodule.WebModule; import org.netbeans.spi.java.project.support.ui.templates.JavaTemplates; import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.modules.web.taglib.TLDDataObject; import org.netbeans.modules.web.taglib.model.Taglib; import org.netbeans.modules.web.taglib.model.TagType; import org.netbeans.modules.web.taglib.model.TldAttributeType; import org.openide.src.ClassElement; import org.openide.src.SourceException; /** A template wizard iterator (sequence of panels). * Used to fill in the second and subsequent panels in the New wizard. * Associate this to a template inside a layer using the * Sequence of Panels extra property. * Create one or more panels from template as needed too. * * @author mk115033 */ public class TagHandlerIterator implements TemplateWizard.Iterator { private transient FileType fileType; private WizardDescriptor.Panel packageChooserPanel,tagHandlerSelectionPanel,tagInfoPanel; // You should define what panels you want to use here: protected WizardDescriptor.Panel[] createPanels (Project project,TemplateWizard wiz) { Sources sources = (Sources) project.getLookup().lookup(org.netbeans.api.project.Sources.class); SourceGroup[] sourceGroups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA); tagHandlerSelectionPanel = new TagHandlerSelection(wiz); packageChooserPanel = JavaTemplates.createPackageChooser(project,sourceGroups,tagHandlerSelectionPanel); sourceGroups = sources.getSourceGroups(WebProjectConstants.TYPE_DOC_ROOT); if (sourceGroups==null || sourceGroups.length==0) sourceGroups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA); if (sourceGroups==null || sourceGroups.length==0) sourceGroups = sources.getSourceGroups(Sources.TYPE_GENERIC); tagInfoPanel = new TagInfoPanel(wiz, project, sourceGroups); return new WizardDescriptor.Panel[] { packageChooserPanel, tagInfoPanel }; } public Set instantiate (TemplateWizard wiz) throws IOException/*, IllegalStateException*/ { // Here is the default plain behavior. Simply takes the selected // template (you need to have included the standard second panel // in createPanels(), or at least set the properties targetName and // targetFolder correctly), instantiates it in the provided // position, and returns the result. // More advanced wizards can create multiple objects from template // (return them all in the result of this method), populate file // contents on the fly, etc. org.openide.filesystems.FileObject dir = Templates.getTargetFolder( wiz ); DataFolder df = DataFolder.findFolder( dir ); FileObject template = Templates.getTemplate( wiz ); if (((TagHandlerSelection)tagHandlerSelectionPanel).isBodyTagSupport()) { FileObject templateParent = template.getParent(); template = templateParent.getFileObject("BodyTagHandler","java"); //NOI18N } DataObject dTemplate = DataObject.find( template ); DataObject dobj = dTemplate.createFromTemplate( df, Templates.getTargetName( wiz ) ); // writing to TLD File TagInfoPanel tldPanel = (TagInfoPanel)tagInfoPanel; Object[][] attrs = tldPanel.getAttributes(); boolean isBodyTag = ((TagHandlerSelection)tagHandlerSelectionPanel).isBodyTagSupport(); // writing setters to tag handler if (attrs.length>0 || isBodyTag) { ClassElement clazz = ClassElement.forName(tldPanel.getClassName(),dobj.getPrimaryFile()); boolean evaluateBody = !((TagInfoPanel)tagInfoPanel).isEmpty(); TagHandlerGenerator generator = new TagHandlerGenerator(clazz,attrs,isBodyTag, evaluateBody); try { generator.generate(); } catch (SourceException ex){ ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,ex); } SaveCookie save = (SaveCookie)dobj.getCookie(SaveCookie.class); if (save!=null) save.save(); } // writing to TLD file if (tldPanel.writeToTLD()) { FileObject tldFo = tldPanel.getTLDFile(); if (tldFo!=null) { if (!tldFo.canWrite()) { String mes = MessageFormat.format ( NbBundle.getMessage (TagHandlerIterator.class, "MSG_tldRO"), new Object [] {tldFo.getNameExt()}); NotifyDescriptor desc = new NotifyDescriptor.Message(mes,NotifyDescriptor.Message.ERROR_MESSAGE); DialogDisplayer.getDefault().notify(desc); } else { TLDDataObject tldDO = (TLDDataObject)DataObject.find(tldFo); Taglib taglib=null; try { taglib = tldDO.getTaglib(); } catch (IOException ex) { String mes = MessageFormat.format ( NbBundle.getMessage (TagHandlerIterator.class, "MSG_tldCorrupted"), new Object [] {tldFo.getNameExt()}); NotifyDescriptor desc = new NotifyDescriptor.Message(mes,NotifyDescriptor.Message.ERROR_MESSAGE); DialogDisplayer.getDefault().notify(desc); } if (taglib!=null) { TagType tag = new TagType(); tag.setName(tldPanel.getTagName()); tag.setTagClass(tldPanel.getClassName()); if (tldPanel.isEmpty()) { tag.setBodyContent("empty"); //NOI18N } else if (tldPanel.isScriptless()) { tag.setBodyContent(isBodyTag?"JSP":"scriptless"); //NOI18N } else if (tldPanel.isTegdependent()) { tag.setBodyContent("tagdependent"); //NOI18N } //Object[][] attrs = tldPanel.getAttributes(); for (int i=0;i |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.