blob: 562f5f54de9bee94202f5ff27bda88479ec67a79 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2013, 2017 CEA LIST.
*
* 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:
* CEA LIST - Initial API and implementation
*****************************************************************************/
package org.eclipse.papyrus.cdo.internal.ui.dialogs;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.papyrus.cdo.internal.ui.l10n.Messages;
import org.eclipse.papyrus.cdo.internal.ui.wizards.CheckoutSelectionBlock;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import com.google.common.base.Supplier;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
/**
* This is the CheckoutSelectionDialog type. Enjoy.
*/
public class CheckoutSelectionDialog extends TitleAreaDialog {
private static final String TITLE = Messages.CheckoutSelectionDialog_0;
private final Supplier<? extends IRunnableContext> runnableContext;
private final EventBus bus;
private final CDOCheckout initialSelection;
private CDOCheckout selectedCheckout;
private CheckoutSelectionBlock checkoutSelectionBlock;
public CheckoutSelectionDialog(Shell parentShell, //
CDOCheckout initialSelection, Supplier<? extends IRunnableContext> runnableContext) {
super(parentShell);
this.runnableContext = runnableContext;
this.bus = new EventBus("repositorySelectionDialog"); //$NON-NLS-1$
this.initialSelection = initialSelection;
setShellStyle(getShellStyle() | SWT.APPLICATION_MODAL | SWT.TITLE);
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(TITLE);
}
@Override
protected Control createDialogArea(Composite parent) {
setTitle(TITLE);
setMessage(Messages.CheckoutSelectionDialog_1);
Composite result = (Composite) super.createDialogArea(parent);
Composite main = new Composite(result, SWT.NONE);
main.setLayout(new GridLayout());
GridDataFactory.fillDefaults().grab(true, true).applyTo(main);
checkoutSelectionBlock = new CheckoutSelectionBlock(bus, runnableContext);
checkoutSelectionBlock.createControl(main);
bus.register(this);
checkoutSelectionBlock.setSelectedCheckout(initialSelection);
return result;
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
setSelectedCheckout(initialSelection);
}
public CDOCheckout getSelectedRepository() {
return selectedCheckout;
}
@Subscribe
public void setSelectedCheckout(CDOCheckout checkout) {
Button ok = getButton(IDialogConstants.OK_ID);
if (ok != null) {
ok.setEnabled(checkout != null);
}
}
@Override
protected void okPressed() {
selectedCheckout = checkoutSelectionBlock.getSelectedCheckout();
super.okPressed();
}
}