blob: 566a47de75bc05f8132f98c11b24d18e47bcfd6b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Ericsson AB and others.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Description:
*
* Contributors:
* Miles Parker, Tasktop Technologies - Initial API and Implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.reviews.example.emftasks.ui;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.mylyn.internal.reviews.example.emftasks.core.EmfExampleCorePlugin;
import org.eclipse.mylyn.reviews.connector.AbstractEmfConnector;
import org.eclipse.mylyn.reviews.connector.ui.AbstractEmfConnectorUi;
import org.eclipse.mylyn.reviews.connector.ui.EmfRepositorySettingsPage;
import org.eclipse.mylyn.reviews.connector.ui.wizards.EmfRepositoryQueryPage;
import org.eclipse.mylyn.reviews.example.emftasks.presentation.EmfTasksModelWizard;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.ui.wizards.ITaskRepositoryPage;
import org.eclipse.mylyn.tasks.ui.wizards.ITaskSearchPage;
import org.eclipse.mylyn.tasks.ui.wizards.RepositoryQueryWizard;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
/**
* Connector specific UI for R4E.
*
* @author Miles Parker
*/
public class EmfExampleConnectorUi extends AbstractEmfConnectorUi {
public static final String[] FILE_NAME_EXTENSIONS = new String[] { "*.emftasks" };
class InnerEmfRepositorySettingsPage extends EmfRepositorySettingsPage {
public InnerEmfRepositorySettingsPage(TaskRepository taskRepository) {
super("Emf Example Repository Settings", "Connect to a Repository File", taskRepository);
}
@Override
public AbstractEmfConnectorUi getConnectorUi() {
return EmfExampleConnectorUi.this;
}
}
class InnerQueryPage extends EmfRepositoryQueryPage {
public InnerQueryPage(TaskRepository repository, IRepositoryQuery query) {
super(repository, "Emf Example Query", query);
}
@Override
public AbstractEmfConnector getConnector() {
return EmfExampleConnectorUi.this.getConnector();
}
}
@Override
public ITaskRepositoryPage getSettingsPage(TaskRepository taskRepository) {
return new InnerEmfRepositorySettingsPage(taskRepository);
}
@Override
public IWizard getQueryWizard(TaskRepository repository, IRepositoryQuery query) {
RepositoryQueryWizard wizard = new RepositoryQueryWizard(repository);
wizard.addPage(new InnerQueryPage(repository, query));
return wizard;
}
@Override
public ITaskSearchPage getSearchPage(TaskRepository repository, IStructuredSelection selection) {
return new InnerQueryPage(repository, null);
}
@Override
public ImageDescriptor getTaskKindOverlay(ITask task) {
return EmfExampleImages.ECORE_OVERLAY;
}
@Override
public AbstractEmfConnector getConnector() {
return EmfExampleCorePlugin.getDefault().getConnector();
}
@Override
public String[] getFileNameExtensions() {
return FILE_NAME_EXTENSIONS;
}
@Override
public IPath createNewRepository(Shell parent) {
EmfTasksModelWizard wizard = new EmfTasksModelWizard();
WizardDialog dialog = new WizardDialog(parent, wizard);
int open = dialog.open();
if (open != SWT.CANCEL && wizard.getModelFile() != null) {
return wizard.getModelFile().getFullPath();
}
return null;
}
}