blob: 6dedc51ecf57d8bd4dee7168b29458bd5a23e1ad [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Eugen Neufeld - initial API and implementation
******************************************************************************/
package org.eclipse.emf.ecp.workspace.internal.ui;
import java.lang.reflect.Field;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
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.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
import org.eclipse.ui.internal.ide.misc.ContainerSelectionGroup;
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
/**
* The Class NewXMIFileWizardPage.
*
* @author Tobias Verhoeven
*/
public class NewXMIFileWizardPage extends WizardNewFileCreationPage {
private TreeViewer memTreeViewer;
/**
* Instantiates a new new XMI file wizard page.
*/
public NewXMIFileWizardPage() {
super(Messages.NewXMIFileWizardPage_CreateNewXMIFile,
new StructuredSelection(ResourcesPlugin.getWorkspace().getRoot()));
setTitle(Messages.NewXMIFileWizardPage_CreateNewXMIFile);
setDescription(Messages.NewXMIFileWizardPage_SelectRootContainer);
setFileName("*.xmi"); //$NON-NLS-1$
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#createControl(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createControl(Composite parent) {
super.createControl(parent);
retrieveTreeViewer(parent);
}
/**
* @param parent
*/
private void retrieveTreeViewer(Composite parent) {
// ...
Composite composite = (Composite) parent.getChildren()[0];
composite = (Composite) composite.getChildren()[0];
final ContainerSelectionGroup csg = (ContainerSelectionGroup) composite.getChildren()[0];
try {
final Field field = ContainerSelectionGroup.class.getDeclaredField("treeViewer"); //$NON-NLS-1$
field.setAccessible(true);
memTreeViewer = (TreeViewer) field.get(csg);
} catch (final IllegalArgumentException ex) {
} catch (final IllegalAccessException ex) {
} catch (final NoSuchFieldException ex) {
} catch (final SecurityException ex) {
}
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#createAdvancedControls(org.eclipse.swt.widgets.Composite)
*/
@Override
protected void createAdvancedControls(final Composite parent) {
final Button btnCreateNewProject = new Button(parent, SWT.NONE);
btnCreateNewProject.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
btnCreateNewProject.setText(Messages.NewXMIFileWizardPage_CreateNewProject);
btnCreateNewProject.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
final BasicNewProjectResourceWizard bd = new BasicNewProjectResourceWizard();
bd.init(PlatformUI.getWorkbench(), null);
final WizardDialog wizardDialog = new WizardDialog(parent.getShell(), bd);
if (wizardDialog.open() == Window.OK) {
} else {
}
if (memTreeViewer != null) {
memTreeViewer.refresh();
}
}
});
super.createAdvancedControls(parent);
}
}