Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

TitleAreaDialog

import org.eclipse.jface.dialogs.TitleAreaDialog; 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.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.List; import org.eclipse.swt.widgets.Shell; public class MailDialog extends TitleAreaDialog {   // IDs for MailDialog buttons   // We use large integers because we don't want   // to conflict with system constants   public static final int OPEN = 9999;   public static final int DELETE = 9998;   // List widget   List list;   // Initial content of the list   String[] items;   // Selected items   String[] itemsToOpen;   /**    * Constructor for MailDialog.    *     * @param shell -    *            Containing shell    * @param items -    *            Mail messages passed to the dialog    */   public MailDialog(Shell shell, String[] items) {     super(shell);     this.items = items;   }   /**    * @see org.eclipse.jface.window.Window#create() We complete the dialog with    *      a title and a message    */   public void create() {     super.create();     setTitle("Mail");     setMessage("You have mail! \n It could be vital for this evening...");   }   /**    * @see org.eclipse.jface.dialogs.Dialog#    *      createDialogArea(org.eclipse.swt.widgets.Composite) Here we fill the    *      center area of the dialog    */   protected Control createDialogArea(Composite parent) {     // Create new composite as container     final Composite area = new Composite(parent, SWT.NULL);     // We use a grid layout and set the size of the margins     final GridLayout gridLayout = new GridLayout();     gridLayout.marginWidth = 15;     gridLayout.marginHeight = 10;     area.setLayout(gridLayout);     // Now we create the list widget     list = new List(area, SWT.BORDER | SWT.MULTI);     // We define a minimum width for the list     final GridData gridData = new GridData();     gridData.widthHint = 200;     list.setLayoutData(gridData);     // We add a SelectionListener     list.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent e) {         // When the selection changes, we re-validate the list         validate();       }     });     // We add the initial mail messages to the list     for (int i = 0; i < items.length; i++) {       list.add(items[i]);     }     return area;   }   private void validate() {     // We select the number of selected list entries     boolean selected = (list.getSelectionCount() > 0);     // We enable/disable the Open and Delete buttons     getButton(OPEN).setEnabled(selected);     getButton(DELETE).setEnabled(selected);     if (!selected)       // If nothing was selected, we set an error message       setErrorMessage("Select at least one entry!");     else       // Otherwise we set the error message to null       // to show the intial content of the message area       setErrorMessage(null);   }   /**    * @see org.eclipse.jface.dialogs.Dialog#    *      createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) We    *      replace the OK and Cancel buttons by our own creations We use the    *      method createButton() (from Dialog), to create the new buttons    */   protected void createButtonsForButtonBar(Composite parent) {     // Create Open button     Button openButton = createButton(parent, OPEN, "Open", true);     // Initially deactivate it     openButton.setEnabled(false);     // Add a SelectionListener     openButton.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent e) {         // Retrieve selected entries from list         itemsToOpen = list.getSelection();         // Set return code         setReturnCode(OPEN);         // Close dialog         close();       }     });     // Create Delete button     Button deleteButton = createButton(parent, DELETE, "Delete", false);     deleteButton.setEnabled(false);     // Add a SelectionListener     deleteButton.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent e) {         // Get the indices of the selected entries         int selectedItems[] = list.getSelectionIndices();         // Remove all these entries         list.remove(selectedItems);         // Now re-validate the list because it has changed         validate();       }     });     // Create Cancel button     Button cancelButton = createButton(parent, CANCEL, "Cancel", false);     // Add a SelectionListener     cancelButton.addSelectionListener(new SelectionAdapter() {       public void widgetSelected(SelectionEvent e) {         setReturnCode(CANCEL);         close();       }     });   }   /**    * Method getItemsToOpen.    *     * @return String[] - the selected items    */   public String[] getItemsToOpen() {     return itemsToOpen;   } }