package org.netbeans.gradle.project.newproject; import java.awt.Component; import java.util.concurrent.atomic.AtomicReference; import javax.swing.event.ChangeListener; import org.jtrim.utils.ExceptionHelper; import org.openide.WizardDescriptor; import org.openide.util.HelpCtx; public final class GradleMultiProjectConfigPanel implements WizardDescriptor.Panel<WizardDescriptor> { private final AtomicReference<GradleMultiProjectPropertiesPanel> panel; private final AtomicReference<GradleMultiProjectConfig> configRef; private final WizardDescriptor wizard; public GradleMultiProjectConfigPanel(AtomicReference<GradleMultiProjectConfig> configRef, WizardDescriptor wizard) { ExceptionHelper.checkNotNullArgument(configRef, "configRef"); this.configRef = configRef; this.panel = new AtomicReference<>(); this.wizard = wizard; } private GradleMultiProjectPropertiesPanel getPanel() { GradleMultiProjectPropertiesPanel result = panel.get(); if (result == null) { panel.compareAndSet(null, new GradleMultiProjectPropertiesPanel(wizard)); result = panel.get(); } return result; } @Override public Component getComponent() { return getPanel(); } @Override public HelpCtx getHelp() { return null; } @Override public void readSettings(WizardDescriptor settings) { getPanel().startValidation(); } @Override public void storeSettings(WizardDescriptor settings) { configRef.set(getPanel().getConfig()); } @Override public boolean isValid() { return getPanel().containsValidData(); } @Override public void addChangeListener(ChangeListener listener) { getPanel().addChangeListener(listener); } @Override public void removeChangeListener(ChangeListener listener) { getPanel().removeChangeListener(listener); } }