/**
*
*/
package org.nightlabs.jfire.reporting.ui.parameter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.base.ui.resource.SharedImages.ImageDimension;
import org.nightlabs.base.ui.wizard.WizardHopPage;
import org.nightlabs.jfire.reporting.layout.id.ReportRegistryItemID;
import org.nightlabs.jfire.reporting.parameter.config.ReportParameterAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.config.ReportParameterAcquisitionUseCase;
import org.nightlabs.jfire.reporting.parameter.config.ValueAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.dao.ReportParameterAcquisitionSetupDAO;
import org.nightlabs.jfire.reporting.ui.ReportingPlugin;
import org.nightlabs.jfire.reporting.ui.resource.Messages;
import org.nightlabs.progress.NullProgressMonitor;
/**
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*
*/
public class ReportParameterAcquisitionUseCaseWizardPage extends WizardHopPage {
private ReportRegistryItemID reportLayoutID;
private ReportParameterAcquisitionSetup setup;
private ReportParameterAcquisitionUseCaseTable useCaseTable;
private boolean isScheduledReportConfiguration;
/**
* @param pageName
*/
public ReportParameterAcquisitionUseCaseWizardPage(String pageName, ReportRegistryItemID reportLayoutID, boolean isScheduledReport) {
super(pageName);
setTitle(Messages.getString("org.nightlabs.jfire.reporting.ui.parameter.eportParameterAcquisitionUseCaseWizardPage.title")); //$NON-NLS-1$
setDescription(Messages.getString("org.nightlabs.jfire.reporting.ui.parameter.eportParameterAcquisitionUseCaseWizardPage.description")); //$NON-NLS-1$
init(reportLayoutID, isScheduledReport);
}
/**
* @param pageName
* @param title
*/
public ReportParameterAcquisitionUseCaseWizardPage(String pageName, String title, ReportRegistryItemID reportLayoutID, boolean isScheduledReport) {
super(pageName, title);
init(reportLayoutID, isScheduledReport);
}
/**
* @param pageName
* @param title
* @param titleImage
*/
public ReportParameterAcquisitionUseCaseWizardPage(String pageName, String title,
ImageDescriptor titleImage, ReportRegistryItemID reportLayoutID, boolean isScheduledReport) {
super(pageName, title, titleImage);
init(reportLayoutID, isScheduledReport);
}
protected void init(ReportRegistryItemID reportLayoutID, boolean isScheduledReport) {
setImageDescriptor(SharedImages.getSharedImageDescriptor(ReportingPlugin.getDefault(), ReportParameterAcquisitionUseCaseWizardPage.class, null, ImageDimension._75x70));
this.reportLayoutID = reportLayoutID;
this.isScheduledReportConfiguration = isScheduledReport;
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.wizard.DynamicPathWizardPage#createPageContents(org.eclipse.swt.widgets.Composite)
*/
@Override
public Control createPageContents(Composite parent) {
try {
setup = ReportParameterAcquisitionSetupDAO.sharedInstance().getSetupForReportLayout(
reportLayoutID, ReportParameterAcquisitionSetupDAO.DEFAULT_FETCH_GROUPS,
new NullProgressMonitor()
);
} catch (Exception e) {
throw new RuntimeException(e);
}
useCaseTable = new ReportParameterAcquisitionUseCaseTable(parent, SWT.NONE);
useCaseTable.setReportParameterAcquisitionSetup(setup);
if (setup.getDefaultSetup() != null) {
List<ReportParameterAcquisitionUseCase> sel = new ArrayList<ReportParameterAcquisitionUseCase>(1);
for (Entry<ReportParameterAcquisitionUseCase, ValueAcquisitionSetup> entry: setup.getValueAcquisitionSetups().entrySet()) {
if (entry.getKey().equals(setup.getDefaultSetup())) {
sel.add(entry.getKey());
break;
}
}
useCaseTable.setSelection(sel);
}
useCaseTable.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
if (useCaseTable.getFirstSelectedElement() == null)
return;
ReportParameterWizardHop.populateValueProviderSetupPages(
setup.getValueAcquisitionSetups().get(useCaseTable.getFirstSelectedElement()),
getReportParameterWizardHop(),
isScheduledReportConfiguration,
false
);
getContainer().updateButtons();
}
});
return useCaseTable;
}
protected ReportParameterWizardHop getReportParameterWizardHop() {
return (ReportParameterWizardHop) getWizardHop();
}
}