///**
// *
// */
//package org.nightlabs.jfire.issuetracking.ui.issue;
//
//import java.util.Collection;
//
//import javax.jdo.FetchPlan;
//
//import org.eclipse.jface.viewers.DoubleClickEvent;
//import org.eclipse.jface.viewers.IDoubleClickListener;
//import org.eclipse.jface.viewers.ISelectionChangedListener;
//import org.eclipse.jface.viewers.LabelProvider;
//import org.eclipse.jface.viewers.SelectionChangedEvent;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.SelectionAdapter;
//import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.layout.GridData;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Control;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Label;
//import org.nightlabs.base.ui.composite.XComboComposite;
//import org.nightlabs.base.ui.composite.XComposite;
//import org.nightlabs.base.ui.composite.XComposite.LayoutDataMode;
//import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
//import org.nightlabs.base.ui.table.AbstractTableComposite;
//import org.nightlabs.base.ui.wizard.WizardHop;
//import org.nightlabs.base.ui.wizard.WizardHopPage;
//import org.nightlabs.jdo.NLJDOHelper;
//import org.nightlabs.jdo.ObjectID;
//import org.nightlabs.jfire.base.jdo.JDOObjectID2PCClassMap;
//import org.nightlabs.jfire.issue.Issue;
//import org.nightlabs.jfire.issue.IssueLinkType;
//import org.nightlabs.jfire.issue.dao.IssueLinkTypeDAO;
//import org.nightlabs.jfire.issuetracking.ui.issue.create.CreateIssueDetailWizardPage;
//import org.nightlabs.jfire.issuetracking.ui.overview.IssueEntryListFactory;
//import org.nightlabs.jfire.issuetracking.ui.overview.IssueEntryListViewer;
//import org.nightlabs.progress.NullProgressMonitor;
//
///**
// * @author Chairat Kongarayawetchakun - chairat at nightlabs dot de
// *
// */
//public class IssueLinkAttachWizardPage
//extends WizardHopPage
//{
// private Button createNewCheckBox;
// private Button selectFromCheckBox;
//
// private IssueEntryListViewer issueEntryViewer;
//
// private ObjectID linkedObjectID;
// private WizardHopPage createNewPage;
//
// public IssueLinkAttachWizardPage(ObjectID linkedObjectID) {
// super("Create link to issue", "Create link to issue");
// this.linkedObjectID = linkedObjectID;
//
// new WizardHop(this);
// }
//
// private String[] FETCH_GROUPS_ISSUE_LINK_TYPE = new String[] { IssueLinkType.FETCH_GROUP_NAME, FetchPlan.DEFAULT };
//
// @Override
// public Control createPageContents(Composite parent) {
// XComposite wrapper = new XComposite(parent, SWT.NONE);
// XComposite mainComposite = new XComposite(wrapper, SWT.NONE, LayoutMode.TIGHT_WRAPPER, LayoutDataMode.GRID_DATA);
//
// XComposite issueLinkTypeChooserComposite = new XComposite(mainComposite, SWT.NONE);
// issueLinkTypeChooserComposite.getGridLayout().numColumns = 2;
// new Label(issueLinkTypeChooserComposite, SWT.NONE).setText("Issue link types: ");
// final XComboComposite<IssueLinkType> issueLinkTypeCombo = new XComboComposite<IssueLinkType>(issueLinkTypeChooserComposite, SWT.NONE);
// GridData gridData = new GridData(GridData.FILL_BOTH);
// gridData.grabExcessVerticalSpace = true;
// issueLinkTypeCombo.setLayoutData(gridData);
// issueLinkTypeCombo.setLabelProvider(new LabelProvider() {
// @Override
// public String getText(Object element) {
// if (element instanceof IssueLinkType) {
// IssueLinkType issueLinkType = (IssueLinkType) element;
// return issueLinkType.getName().getText();
// }
// return "";
// }
// });
// issueLinkTypeChooserComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//
// issueLinkTypeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//
//
// Display.getCurrent().asyncExec(new Runnable() {
// @Override
// public void run() {
// Class<?> pcClass = JDOObjectID2PCClassMap.sharedInstance().getPersistenceCapableClass(linkedObjectID);
// Collection<IssueLinkType> issueLinkTypes = IssueLinkTypeDAO.sharedInstance().getIssueLinkTypes(pcClass, FETCH_GROUPS_ISSUE_LINK_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor());
// issueLinkTypeCombo.setInput(issueLinkTypes);
// issueLinkTypeCombo.setSelection(0);
// }
// });
//
// createNewCheckBox = new Button(mainComposite, SWT.RADIO);
// createNewCheckBox.setText("Create new issue");
// createNewCheckBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//
// selectFromCheckBox = new Button(mainComposite, SWT.RADIO);
// selectFromCheckBox.setText("Select issue");
// selectFromCheckBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
//
// createNewCheckBox.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// setCreateNewIssue(true, true);
// }
// });
//
// selectFromCheckBox.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// setCreateNewIssue(false, true);
// }
// });
//
// issueEntryViewer = new IssueEntryListViewer(new IssueEntryListFactory().createEntry()) {
// @Override
// protected void addResultTableListeners(final AbstractTableComposite tableComposite) {
// tableComposite.getTableViewer().addDoubleClickListener(new IDoubleClickListener() {
// @Override
// public void doubleClick(DoubleClickEvent evt) {
// Collection<Issue> issueCollection = tableComposite.getSelectedElements();
// Issue selectedIssue = issueCollection.iterator().next();
// selectedIssue.createIssueLink(issueLinkTypeCombo.getSelectedElement(), linkedObjectID);
// }
// });
//
// tableComposite.addSelectionChangedListener(new ISelectionChangedListener() {
// public void selectionChanged(SelectionChangedEvent e) {
// getContainer().updateButtons();
// tableComposite.getSelectedElements();
//// notifyIssueLinkSelectionListeners();
// }
// });
// }
// };
//
// Composite issueEntryViewerComposite = issueEntryViewer.createComposite(mainComposite);
// gridData = new GridData(GridData.FILL_BOTH);
// gridData.grabExcessVerticalSpace = true;
//
// issueEntryViewerComposite.setLayoutData(gridData);
//
// setCreateNewIssue(false, false);
// return wrapper;
// }
//
// @Override
// public boolean isPageComplete() {
// if (getWizardHop().getNextPage(this) != null) {
// return true;
// }
// return false;//issueEntryViewer.getIssueTable().getSelection() != null;//issueLinkAdder.isComplete();
// }
//
// @Override
// public void onNext() {
// }
//
// @Override
// public boolean canBeLastPage() {
// if (createNewCheckBox.getSelection()) {
// return false;
// }
//
// return true;
// }
//
// public void setCreateNewIssue(boolean isCreateNew, boolean isUpdateButton) {
// createNewCheckBox.setSelection(isCreateNew);
// selectFromCheckBox.setSelection(!isCreateNew);
//
//
// issueEntryViewer.getIssueTable().setEnabled(!isCreateNew);
//
// if (isCreateNew) {
// createNewPage = new CreateIssueDetailWizardPage(null);
// getWizardHop().addHopPage(new CreateIssueDetailWizardPage(null));
// } else {
// getWizardHop().removeAllHopPages();
// }
// if (isUpdateButton)
// getContainer().updateButtons();
// }
//}