| /******************************************************************************* |
| * Copyright (c) 2004, 2007 Boeing. |
| * 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: |
| * Boeing - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.osee.ote.ui.define.dialogs; |
| |
| import org.eclipse.jface.dialogs.TitleAreaDialog; |
| import org.eclipse.jface.viewers.ITableLabelProvider; |
| import org.eclipse.osee.framework.ui.swt.ImageManager; |
| import org.eclipse.osee.ote.ui.define.OteDefineImage; |
| import org.eclipse.osee.ote.ui.define.panels.CommentComposite; |
| import org.eclipse.osee.ote.ui.define.panels.IOverrideHandler; |
| import org.eclipse.osee.ote.ui.define.panels.SelectionComposite; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.custom.SashForm; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Shell; |
| |
| /** |
| * @author Roberto E. Escobar |
| */ |
| public class CommitDialog extends TitleAreaDialog { |
| |
| private static final Image MESSAGE_IMAGE = ImageManager.getImage(OteDefineImage.COMMIT_WIZ); |
| private static final Image TITLE_BAR_IMAGE = ImageManager.getImage(OteDefineImage.COMMIT); |
| |
| private static final String MESSAGE_TITLE = "Enter a commit comment"; |
| private static final String TITLE_BAR_TEXT = "OSEE Commit"; |
| private static final String COMMENT_GROUP_TEXT = "Comment"; |
| private static final String MESSAGE = |
| "You can specify a comment describing the changes in the area below. " + "Empty comments are allowed, but adding a comment would help others understand your changes. \n"; |
| private static final String CONFLICT_MESSAGE = |
| "NOTE: Exclamation marks denote items that already exist in the repository or are missing revision infromation. These items will not be committed. \n"; |
| |
| private SelectionComposite selectionComposite; |
| private CommentComposite commentComposite; |
| private final ITableLabelProvider tableLabelProvider; |
| private Object[] selectable; |
| private Object[] unselectable; |
| private Object[] selected; |
| private final String[] columnNames; |
| private IOverrideHandler overrideHandler; |
| |
| public CommitDialog(Shell parent, String[] columnNames, ITableLabelProvider tableLabelProvider) { |
| super(parent); |
| setShellStyle(SWT.SHELL_TRIM); |
| this.columnNames = columnNames; |
| this.tableLabelProvider = tableLabelProvider; |
| this.selectable = this.selected = new Object[0]; |
| this.overrideHandler = null; |
| } |
| |
| @Override |
| protected Control createButtonBar(Composite parent) { |
| Label separator = new Label(parent, SWT.HORIZONTAL | SWT.SEPARATOR); |
| separator.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false)); |
| return super.createButtonBar(parent); |
| } |
| |
| /* |
| * @see Dialog#createDialogArea(Composite) |
| */ |
| @Override |
| protected Control createDialogArea(Composite parent) { |
| Composite content = (Composite) super.createDialogArea(parent); |
| |
| Composite composite = new Composite(content, SWT.NONE); |
| composite.setLayout(new GridLayout()); |
| composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| |
| SashForm sash = new SashForm(composite, SWT.VERTICAL); |
| sash.setLayout(new GridLayout()); |
| sash.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| |
| createCommentArea(sash); |
| createCommitArea(sash); |
| sash.setWeights(new int[] {1, 2}); |
| |
| setTitle(MESSAGE_TITLE); |
| setTitleImage(MESSAGE_IMAGE); |
| setMessage(MESSAGE + (unselectable != null && unselectable.length > 0 ? CONFLICT_MESSAGE : "")); |
| getShell().setText(TITLE_BAR_TEXT); |
| getShell().setImage(TITLE_BAR_IMAGE); |
| return sash; |
| } |
| |
| private void createCommentArea(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NONE); |
| GridLayout layout = new GridLayout(); |
| layout.marginHeight = 0; |
| composite.setLayout(layout); |
| composite.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, true)); |
| |
| Group group = new Group(composite, SWT.NONE); |
| group.setLayout(new GridLayout()); |
| group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| group.setText(COMMENT_GROUP_TEXT); |
| |
| commentComposite = new CommentComposite(group, SWT.NONE); |
| commentComposite.setLayout(new GridLayout()); |
| commentComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| |
| Label separator = new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR); |
| separator.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false)); |
| } |
| |
| private void createCommitArea(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NONE); |
| GridLayout layout = new GridLayout(); |
| layout.verticalSpacing = 0; |
| composite.setLayout(layout); |
| composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| |
| selectionComposite = |
| new SelectionComposite(composite, SWT.BORDER, columnNames, tableLabelProvider, selectable, true, selected, |
| unselectable, overrideHandler); |
| selectionComposite.setLayout(new GridLayout()); |
| selectionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| } |
| |
| public void setInput(Object[] input) { |
| this.selectable = input; |
| } |
| |
| public void setSelected(Object[] selected) { |
| this.selected = selected; |
| } |
| |
| public void setUnSelectable(Object[] unselectable) { |
| this.unselectable = unselectable; |
| } |
| |
| public void setOverrideHandler(IOverrideHandler overrideHandler) { |
| this.overrideHandler = overrideHandler; |
| } |
| |
| public String getComments() { |
| return commentComposite.getMessage(); |
| } |
| |
| public Object[] getSelectedResources() { |
| return selectionComposite.getSelectedResources(); |
| } |
| } |