Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   * Other names may be trademarks of their respective owners.
   *
   * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common
  * Development and Distribution License("CDDL") (collectively, the
  * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * http://www.netbeans.org/cddl-gplv2.html
  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  * specific language governing permissions and limitations under the
  * License.  When distributing the software, include this License Header
  * Notice in each file and include the License file at
  * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Oracle in the GPL Version 2 section of the License file that
  * accompanied this code. If applicable, add the following below the
  * License Header, with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * Contributor(s):
  *
  * The Original Software is NetBeans. The Initial Developer of the Original
  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2008 Sun
  * Microsystems, Inc. All Rights Reserved.
  *
  * If you wish your version of this file to be governed by only the CDDL
  * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
  * your version of this file under either the CDDL, the GPL Version 2 or
  * to extend the choice of license to its licensees as provided above.
  * However, if you add GPL Version 2 code and therefore, elected the GPL
  * Version 2 license, then the option applies only if the new code is
  * made subject to such option by the copyright holder.
  */
 package org.netbeans.modules.ide.ergonomics.newproject;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 public class DescriptionStep implements WizardDescriptor.Panel<WizardDescriptor> {
 
     private ContentPanel panel;
     private ProgressHandle handle = null;
     private Collection<UpdateElementforEnable = null;
     private final List<ChangeListenerlisteners = new ArrayList<ChangeListener> ();
     private static FindComponentModules finder = null;
     private FeatureInfo info;
     private WizardDescriptor wd;
     private ConfigurationPanel configPanel;
     private final boolean autoEnable;
 
     public DescriptionStep(boolean autoEnable) {
        this. = autoEnable;
    }
    @Override
    public Component getComponent () {
        if ( == null) {
             = new ConfigurationPanel(new Callable<JComponent>() {
                @Override
                public JComponent call() throws Exception {
                    FoDFileSystem.getInstance().refresh();
                    waitForDelegateWizard();
                    return new JLabel(" ");
                }
            }, );
             = new ContentPanel (getBundle ("DescriptionPanel_Name"));
            .addPropertyChangeListener ();
        }
        return ;
    }
    public HelpCtx getHelp () {
        return .;
    }
    public boolean isValid () {
        return false;
    }
    public synchronized void addChangeListener (ChangeListener l) {
        .add(l);
    }
    public synchronized void removeChangeListener (ChangeListener l) {
        .remove(l);
    }
    private void fireChange () {
        ChangeEvent e = new ChangeEvent (this);
        List<ChangeListenertemplist;
        synchronized (this) {
            templist = new ArrayList<ChangeListener> ();
        }
        for (ChangeListener l : templist) {
            l.stateChanged (e);
        }
    }
    
    private PresentModules findModules = new PresentModules();
    private class PresentModules extends Object
    implements RunnablePropertyChangeListener {
        public void propertyChange (PropertyChangeEvent evt) {
            if (..equals (evt.getPropertyName ())) {
                FeatureManager.getInstance().create(this).schedule(0);
            }
        }
        public void run () {
            assert !SwingUtilities.isEventDispatchThread ();
            presentModulesForActivation ();
        }
    };
    private void presentModulesForActivation () {
         = getFinder ().getModulesForEnable ();
        presentModulesForEnable ();
    }
    
    private void presentModulesForEnable () {
        if ( != null) {
            .finish ();
            .replaceComponents ();
             = null;
        }
        final  Collection<UpdateElementelems = getFinder ().getModulesForEnable ();
        if (elems != null && !elems.isEmpty ()) {
            Collection<UpdateElementvisible = getFinder().getVisibleUpdateElements (elems);
            final String name = ModulesInstaller.presentUpdateElements (visible);
            .setInfo();
            .setPanelName(name);
            .replaceComponents();
             = elems;
            fireChange ();
        } else {
            FoDFileSystem.getInstance().refresh();
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    waitForDelegateWizard ();
                    fireChange ();
                }
            });
        }
    }
    
    private FindComponentModules getFinder () {
        assert  != null : "Finder needs to be created first!";
        return ;
    }
    private static String getBundle (String keyObject... params) {
        return NbBundle.getMessage (DescriptionStep.classkeyparams);
    }
    public void readSettings (WizardDescriptor settings) {
         = settings;
        assert o != null && o instanceof FileObject : o + " is not null and instanceof FileObject.";
        FileObject fileObject = (FileObjecto;
         = FoDFileSystem.getInstance ().whichProvides(fileObject);
         = new FindComponentModules();
    }
    public void storeSettings (WizardDescriptor settings) {
        if ( != null && ! .isEmpty ()) {
            fireChange ();
        }
    }
    private void waitForDelegateWizard () {
        assert o != null && o instanceof FileObject :
            o + " is not null and instanceof FileObject";
        String templateResource = ((FileObjecto).getPath ();
        FileObject fo = null;
        WizardDescriptor.InstantiatingIterator<?> iterator = null;
        int i = 0;
        while (fo == null || iterator == null) {
            FoDFileSystem.getInstance().refresh();
            FoDFileSystem.getInstance().waitFinished();
            // hot-fixed wizard providers - temporary
            if (templateResource.startsWith("Servers/WizardProvider")) {
                try {
                    ClassLoader loader = Lookup.getDefault().lookup(ClassLoader.class);
                    Class<?> clazz = Class.forName("org.netbeans.modules.j2ee.deployment.plugins.spi.OptionalDeploymentManagerFactory"trueloader);
                    Collection c = Lookups.forPath("J2EE/DeploymentPlugins/" +
                            templateResource.substring(templateResource.indexOf('-') + 1, templateResource.indexOf('.')) + "/").lookupAll(clazz);
                    if (!c.isEmpty()) {
                        Object optFactory = c.iterator().next();
                        Method m = optFactory.getClass().getMethod("getAddInstanceIterator");
                        iterator = (InstantiatingIteratorm.invoke(optFactory);
                        fo = (FileObjecto;
                    }
                } catch (Exception ex) {
                    Exceptions.printStackTrace(ex);
                    break;
                }
            } else {
                fo = FileUtil.getConfigFile(templateResource);
                iterator = readWizard(fo);
            }
            if (iterator instanceof FeatureOnDemandWizardIterator) {
                Logger LOG = Logger.getLogger(DescriptionStep.class.getName());
                LOG.warning(
                    "There is still wrong interator " + // NOI18N
                    iterator.getClass().getName() +
                    " for file object " + fo // NOI18N
                );
                FeatureManager.dumpModules(..);
                iterator = null;
                if (++i == 10) {
                    Logger.getLogger(DescriptionStep.class.getName()).severe("Giving up to find iterator for " + fo); // NOI18N
                    Logger.getLogger(DescriptionStep.class.getName()).severe(threadDump()); // NOI18N
                    boolean npe = false;
                    assert npe = true;
                    if (npe) {
                        throw new NullPointerException("Send us the messages.log please!"); // NOI18N
                    }
                    return// give up
                }
                LOG.info("Forcing refresh"); // NOI18N
                // force refresh for the filesystem
                FoDFileSystem.getInstance().refreshForce();
                LOG.info("Done with refresh"); // NOI18N
                FileObject fake = FileUtil.getConfigFile(templateResource);
                if (fake == null) {
                    LOG.warning("no "templateResource + " on FoD: " + fake); // NOI18N
                    FileObject p = fo;
                    while (p != null) {
                        LOG.info("  parent: " + p + " children: " + Arrays.asList(p.getChildren())); // NOI18N
                        p = p.getParent();
                    }
                } else {
                    LOG.info("fake found " + fake); // NOI18N
                    LOG.info("its wizard is " + readWizard(fake)); // NOI18N
                }
            }
        }
        iterator.initialize ();
        fireChange ();
    }
    
        if (fo == null || !fo.isValid()) {
            return null;
        }
        Object o = fo.getAttribute ("instantiatingIterator");
        if (o == null || (o instanceof FeatureOnDemandWizardIterator)) {
            Object twi = fo.getAttribute ("templateWizardIterator");
            if (twi != null) {
                o = twi;
            }
        }
        if (o instanceof WizardDescriptor.InstantiatingIterator) {
            // OK
        } else if (o instanceof TemplateWizard.Iterator) {
            final TemplateWizard.Iterator it = (TemplateWizard.Iteratoro;
            o = new WizardDescriptor.InstantiatingIterator<WizardDescriptor>() {
                private TemplateWizard tw;
                public Set instantiate() throws IOException {
                    return it.instantiate();
                }
                public void initialize(WizardDescriptor wizard) {
                     = (TemplateWizard)wizard;
                    try {
                        FileObject real = .getTemplate().getPrimaryFile();
                        if (!real.isValid()) {
                            real = FileUtil.getConfigFile(real.getPath());
                        }
                        .setTemplate(DataObject.find(real));
                        it.initialize();
                    } catch (DataObjectNotFoundException ex) {
                        Logger.getLogger(DescriptionStep.class.getName()).severe(ex.toString());
                    }
                }
                public void uninitialize(WizardDescriptor wizard) {
                    it.uninitialize((TemplateWizard)wizard);
                     = null;
                }
                public Panel<WizardDescriptorcurrent() {
                    return it.current();
                }
                public String name() {
                    return it.name();
                }
                public boolean hasNext() {
                    return it.hasNext();
                }
                public boolean hasPrevious() {
                    return it.hasPrevious();
                }
                public void nextPanel() {
                    it.nextPanel();
                }
                public void previousPanel() {
                    it.previousPanel();
                }
                public void addChangeListener(ChangeListener l) {
                    it.addChangeListener(l);
                }
                public void removeChangeListener(ChangeListener l) {
                    it.removeChangeListener(l);
                }
            };
        }
        assert o != null && o instanceof WizardDescriptor.InstantiatingIterator :
            o + " is not null and instanceof WizardDescriptor.InstantiatingIterator";
        return (WizardDescriptor.InstantiatingIterator<?>)o;
    }
    private static String threadDump() {
        Map<ThreadStackTraceElement[]> all = Thread.getAllStackTraces();
        StringBuilder sb = new StringBuilder();
        sb.append("Thread dump:\n"); // NOI18N
        for (Map.Entry<ThreadStackTraceElement[]> entry : all.entrySet()) {
            sb.append(entry.getKey().getName()).append('\n');
            if (entry.getValue() == null) {
                sb.append("  no information\n"); // NOI18N
                continue;
            }
            for (StackTraceElement stackTraceElement : entry.getValue()) {
                sb.append("  ");
                sb.append(stackTraceElement.getClassName()).append('.');
                sb.append(stackTraceElement.getMethodName()).append(':');
                sb.append(stackTraceElement.getLineNumber()).append('\n');
            }
        }
        return sb.toString();
    }
New to GrepCode? Check out our FAQ X