/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.aspose.words.maven.examples;
import java.awt.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
import javax.swing.JComponent;
import javax.swing.event.ChangeListener;
import org.netbeans.api.templates.TemplateRegistration;
import org.openide.WizardDescriptor;
import org.openide.util.NbBundle.Messages;
/**
* @author Adeel Ilyas
*/
@TemplateRegistration(
folder = "Classes",
displayName = "#AsposeNewFileWizardIterator_displayName",
iconBase = "com/aspose/words/maven/Aspose.png",
position = 10,
description = "AsposeExampleWizard.html")
@Messages("AsposeNewFileWizardIterator_displayName=Aspose.Words Code Example")
public final class AsposeExampleWizardIterator implements WizardDescriptor.InstantiatingIterator<WizardDescriptor> {
private int index;
private WizardDescriptor wizard;
private List<WizardDescriptor.Panel<WizardDescriptor>> panels;
private List<WizardDescriptor.Panel<WizardDescriptor>> getPanels() {
if (panels == null) {
panels = new ArrayList<>();
panels.add(new AsposeExampleWizardPanel());
String[] steps = createSteps();
for (int i = 0; i < panels.size(); i++) {
Component c = panels.get(i).getComponent();
if (steps[i] == null) {
// Default step name to component name of panel. Mainly
// useful for getting the name of the target chooser to
// appear in the list of steps.
steps[i] = c.getName();
}
if (c instanceof JComponent) { // assume Swing components
JComponent jc = (JComponent) c;
jc.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i);
jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, steps);
jc.putClientProperty(WizardDescriptor.PROP_AUTO_WIZARD_STYLE, true);
jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DISPLAYED, true);
jc.putClientProperty(WizardDescriptor.PROP_CONTENT_NUMBERED, true);
}
}
}
return panels;
}
/**
*
* @return
* @throws IOException
*/
@Override
public Set<?> instantiate() throws IOException {
// TODO return set of FileObject (or DataObject) you have created
return Collections.emptySet();
}
/**
*
* @param wizard
*/
@Override
public void initialize(WizardDescriptor wizard) {
this.wizard = wizard;
}
/**
*
* @param wizard
*/
@Override
public void uninitialize(WizardDescriptor wizard) {
panels = null;
}
/**
*
* @return
*/
@Override
public WizardDescriptor.Panel<WizardDescriptor> current() {
return getPanels().get(index);
}
/**
*
* @return
*/
@Override
public String name() {
return index + 1 + ". from " + getPanels().size();
}
/**
*
* @return
*/
@Override
public boolean hasNext() {
return index < getPanels().size() - 1;
}
/**
*
* @return
*/
@Override
public boolean hasPrevious() {
return index > 0;
}
/**
*
*/
@Override
public void nextPanel() {
if (!hasNext()) {
throw new NoSuchElementException();
}
index++;
}
/**
*
*/
@Override
public void previousPanel() {
if (!hasPrevious()) {
throw new NoSuchElementException();
}
index--;
}
// If nothing unusual changes in the middle of the wizard, simply:
/**
*
* @param l
*/
@Override
public void addChangeListener(ChangeListener l) {
}
/**
*
* @param l
*/
@Override
public void removeChangeListener(ChangeListener l) {
}
private String[] createSteps() {
String[] beforeSteps = (String[]) wizard.getProperty("WizardPanel_contentData");
assert beforeSteps != null : "This wizard may only be used embedded in the template wizard";
String[] res = new String[(beforeSteps.length - 1) + panels.size()];
for (int i = 0; i < res.length; i++) {
if (i < (beforeSteps.length - 1)) {
res[i] = beforeSteps[i];
} else {
res[i] = panels.get(i - beforeSteps.length + 1).getComponent().getName();
}
}
return res;
}
}