blob: 778ce40b15bbe7fdb45dc4f8f56cb4c9b3eaa87a [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2005, 2014 IBM Corporation, Ericsson
* 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
*
* Contributors:
* IBM - Initial API and implementation
* Bernd Hufmann - Updated for TMF
**********************************************************************/
package org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.SDWidget;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.util.Messages;
/**
* This class implements a dialog box for collecting printing information.
*
* @version 1.0
* @author sveyrier
*/
public class SDPrintDialog extends Dialog {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
/**
* The sequence dialog widget reference.
*/
private SDWidget fSdView;
/**
* Sequence dialog print dialog UI
*/
private SDPrintDialogUI fDialogUI;
/**
* Error message to display.
*/
private String fErrorMessage = null;
/**
* A message label.
*/
private Label fMessageLabel = null;
/**
* Flag whether the page is complete or not
*/
private boolean fIsPageComplete = true;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Standard constructor
*
* @param shell Shell reference
* @param viewer Sequence diagram widget reference
*/
public SDPrintDialog(Shell shell, SDWidget viewer) {
super(shell);
fSdView = viewer;
fDialogUI = new SDPrintDialogUI(shell, fSdView);
fDialogUI.setParentDialog(this);
}
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
@Override
protected Control createDialogArea(Composite p) {
p.getShell().setText(Messages.SequenceDiagram_Print);
Composite parent = (Composite) super.createDialogArea(p);
fDialogUI.createDialogArea(parent);
fMessageLabel = new Label(parent, SWT.NONE);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
gridData.horizontalSpan = 6;
fMessageLabel.setLayoutData(gridData);
setErrorMessage(fErrorMessage);
return parent;
}
@Override
protected void okPressed() {
if (fDialogUI.okPressed()) {
super.okPressed();
}
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
createButton(parent, IDialogConstants.CLIENT_ID, Messages.SequenceDiagram_Printer, false);
getButton(IDialogConstants.CLIENT_ID).addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
fDialogUI.printButtonSelected();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
// Do nothing
}
});
updateButtons();
}
/**
* @return the dialog UI
*/
public SDPrintDialogUI getDialogUI() {
return fDialogUI;
}
/**
* Sets the error message.
*
* @param message error message to set
*/
public void setErrorMessage(String message) {
fErrorMessage = message;
if (fMessageLabel != null) {
if (fErrorMessage == null) {
fMessageLabel.setText(""); //$NON-NLS-1$
} else {
fMessageLabel.setText(fErrorMessage);
}
}
}
/**
* Sets the page complete flag.
* @param complete whether page is complete or not
*/
public void setPageComplete(boolean complete) {
fIsPageComplete = complete;
updateButtons();
}
/**
* Udates the button enable state.
*/
public void updateButtons() {
Button okButton = getButton(IDialogConstants.OK_ID);
if (fIsPageComplete) {
if (okButton != null) {
okButton.setEnabled(true);
}
} else {
if (okButton != null) {
okButton.setEnabled(false);
}
}
}
}