Eclipse Platform
2.0

org.eclipse.compare
Class EditionSelectionDialog

java.lang.Object
  |
  +--org.eclipse.jface.window.Window
        |
        +--org.eclipse.jface.dialogs.Dialog
              |
              +--org.eclipse.compare.internal.ResizableDialog
                    |
                    +--org.eclipse.compare.EditionSelectionDialog

public class EditionSelectionDialog
extends org.eclipse.compare.internal.ResizableDialog

A dialog where one input element can be compared against a list of historic variants (editions) of the same input element. The dialog can be used to implement functions like "Compare/Replace with Version" or "Compare/Replace from Local History" on workspace resources.

In addition it is possible to specify a subsection of the input element (e.g. a method in a Java source file) by means of a "path". In this case the dialog compares only the subsection (as specified by the path) with the corresponding subsection in the list of editions. Only those editions are shown where the subsection differs from the same subsection in another edition thereby minimizing the number of presented variants. This functionality can be used to implement "Replace from Local History" for the Java language.

Subsections of an input element are determined by first finding an IStructureCreator for the input's type. Then the method locate is used to extract the subsection.

Each edition (variant in the list of variants) must implement the IModificationDate interface so that the dialog can sort the editions and present them in a tree structure where every node corresponds one day.

The functionality is surfaced in a single function selectEdition.

Clients may instantiate this class; it is not intended to be subclassed.

See Also:
IModificationDate, ITypedElement

Nested Class Summary
 
Nested classes inherited from class org.eclipse.jface.window.Window
Window.IExceptionHandler
 
Field Summary
 
Fields inherited from class org.eclipse.compare.internal.ResizableDialog
fBundle
 
Fields inherited from class org.eclipse.jface.dialogs.Dialog
DLG_IMG_ERROR, DLG_IMG_INFO, DLG_IMG_MESSAGE_ERROR, DLG_IMG_MESSAGE_INFO, DLG_IMG_MESSAGE_WARNING, DLG_IMG_QUESTION, DLG_IMG_WARNING
 
Fields inherited from class org.eclipse.jface.window.Window
CANCEL, OK
 
Constructor Summary
EditionSelectionDialog(Shell parent, ResourceBundle bundle)
          Creates a new modal, resizable dialog.
 
Method Summary
protected  void createButtonsForButtonBar(Composite parent)
          Adds buttons to this dialog's button bar.
protected  Control createDialogArea(Composite parent)
          Creates and returns the contents of the upper part of this dialog (above the button bar).
protected  Image getEditionImage(ITypedElement selectedEdition, ITypedElement item)
          Returns an image for identifying the edition side of a compare viewer.
protected  String getEditionLabel(ITypedElement selectedEdition, ITypedElement item)
          Returns a label for identifying the edition side of a compare viewer.
protected  String getShortEditionLabel(ITypedElement edition, ITypedElement item, Date date)
          Returns a label for identifying a node in the edition tree viewer.
 ITypedElement getTarget()
          Returns the input target that has been specified with the most recent call to selectEdition.
protected  String getTargetLabel(ITypedElement target, ITypedElement item)
          Returns a label for identifying the target side of a compare viewer.
protected  void okPressed()
          Overidden to disable dismiss on double click in compare mode.
 ITypedElement selectEdition(ITypedElement target, ITypedElement[] inputEditions, Object ppath)
          Presents this modal dialog with the functionality described in the class comment above.
 ITypedElement selectPreviousEdition(ITypedElement target, ITypedElement[] inputEditions, Object ppath)
          Select the previous edition (presenting a UI).
 void setAddMode(boolean addMode)
          Controls whether the EditionSelectionDialog is in 'add' mode or 'replace' mode (the default).
 void setCompareMode(boolean compareMode)
          Controls whether the EditionSelectionDialog is in 'compare' mode or 'add/replace' (the default) mode.
 void setEditionTitleArgument(String titleArgument)
          Sets an additional and optional argument for the edition pane's title.
 void setEditionTitleImage(Image titleImage)
          Sets an optional image for the edition pane's title.
 void setHideIdenticalEntries(boolean hide)
          Controls whether identical entries are shown or not (default).
 void setTargetIsRight(boolean isRight)
          Controls whether workspace target is on the left (the default) or right hand side.
 
Methods inherited from class org.eclipse.compare.internal.ResizableDialog
close, getInitialLocation, getInitialSize
 
Methods inherited from class org.eclipse.jface.dialogs.Dialog
buttonPressed, cancelPressed, constrainShellSize, convertHeightInCharsToPixels, convertHeightInCharsToPixels, convertHorizontalDLUsToPixels, convertHorizontalDLUsToPixels, convertVerticalDLUsToPixels, convertVerticalDLUsToPixels, convertWidthInCharsToPixels, convertWidthInCharsToPixels, createButton, createButtonBar, createContents, getButton, getButtonBar, getCancelButton, getDialogArea, getImage, getOKButton, initializeDialogUnits
 
Methods inherited from class org.eclipse.jface.window.Window
configureShell, create, createShell, getContents, getDefaultImage, getParentShell, getReturnCode, getShell, getShellListener, getShellStyle, getWindowManager, handleFontChange, handleShellCloseEvent, initializeBounds, open, setBlockOnOpen, setDefaultImage, setExceptionHandler, setReturnCode, setShellStyle, setWindowManager
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EditionSelectionDialog

public EditionSelectionDialog(Shell parent,
                              ResourceBundle bundle)
Creates a new modal, resizable dialog. Various titles, icons, and labels are configured from the given resource bundle. The following resource keys are used:
	key         type          description
	title       String        dialog title
	width       Integer       initial width of dialog
	height      Integer       initial height of dialog
	treeTitleFormat   MessageFormat pane title for edition tree; arg 0 is the target
	dateIcon    String        icon for node in edition tree; path relative to plugin
	timeIcon    String        icon for leaf in edition tree; path relative to plugin
	todayFormat MessageFormat format string if date is todays date; arg 0 is date
	yesterdayFormat MessageFormat format string if date is yesterdays date; arg 0 is date
	dayFormat   MessageFormat format string if date is any other date; arg 0 is date
	editionLabel String       label for editions side of compare viewer; arg 0 is the date
	targetLabel  String       label for target side of compare viewer 
  buttonLabel  String       label for OK button; default is IDialogConstants.OK_LABEL
 

Parameters:
parent - if not null the new dialog stays on top of this parent shell
bundle - ResourceBundle to configure the dialog
Method Detail

setEditionTitleArgument

public void setEditionTitleArgument(String titleArgument)
Sets an additional and optional argument for the edition pane's title.

Parameters:
titleArgument - an optional argument for the edition pane's title
Since:
2.0

setEditionTitleImage

public void setEditionTitleImage(Image titleImage)
Sets an optional image for the edition pane's title.

Parameters:
titleImage - an optional image for the edition pane's title
Since:
2.0

selectPreviousEdition

public ITypedElement selectPreviousEdition(ITypedElement target,
                                           ITypedElement[] inputEditions,
                                           Object ppath)
Select the previous edition (presenting a UI).

Parameters:
target - the input object against which the editions are compared; must not be null
Returns:
returns the selected edition or null if error occurred. The returned ITypedElement is one of the original editions if path was null; otherwise it is an ITypedElement returned from IStructureCreator.locate(path, item)
Since:
2.0

selectEdition

public ITypedElement selectEdition(ITypedElement target,
                                   ITypedElement[] inputEditions,
                                   Object ppath)
Presents this modal dialog with the functionality described in the class comment above.

Parameters:
target - the input object against which the editions are compared; must not be null
Returns:
returns the selected edition or null if dialog was cancelled. The returned ITypedElement is one of the original editions if path was null; otherwise it is an ITypedElement returned from IStructureCreator.locate(path, item)

setHideIdenticalEntries

public void setHideIdenticalEntries(boolean hide)
Controls whether identical entries are shown or not (default). This method must be called before selectEdition.

Parameters:
hide - if true identical entries are hidden; otherwise they are shown.
Since:
2.0

setTargetIsRight

public void setTargetIsRight(boolean isRight)
Controls whether workspace target is on the left (the default) or right hand side.

Parameters:
isRight - if true target is shown on right hand side.
Since:
2.0

setAddMode

public void setAddMode(boolean addMode)
Controls whether the EditionSelectionDialog is in 'add' mode or 'replace' mode (the default).

Parameters:
addMode - if true dialog is in 'add' mode.
Since:
2.0

setCompareMode

public void setCompareMode(boolean compareMode)
Controls whether the EditionSelectionDialog is in 'compare' mode or 'add/replace' (the default) mode.

Since:
2.0

getTarget

public ITypedElement getTarget()
Returns the input target that has been specified with the most recent call to selectEdition. If a not null path was specified this method returns a subsection of this target (IStructureCreator.locate(path, target)) instead of the input target.

For example if the target is a Java compilation unit and path specifies a method, the value returned from getTarget will be the method not the compilation unit.

Returns:
the last specified target or a subsection thereof.

getTargetLabel

protected String getTargetLabel(ITypedElement target,
                                ITypedElement item)
Returns a label for identifying the target side of a compare viewer. This implementation extracts the value for the key "targetLabel" from the resource bundle and passes it as the format argument to MessageFormat.format. The single format argument for MessageFormat.format ("{0}" in the format string) is the name of the given input element.

Subclasses may override to create their own label.

Parameters:
target - the target element for which a label must be returned
item - if a path has been specified in selectEdition a sub element of the given target; otherwise the same as target
Returns:
a label the target side of a compare viewer

getEditionLabel

protected String getEditionLabel(ITypedElement selectedEdition,
                                 ITypedElement item)
Returns a label for identifying the edition side of a compare viewer. This implementation extracts the value for the key "editionLabel" from the resource bundle and passes it as the format argument to MessageFormat.format. The single format argument for MessageFormat.format ("{0}" in the format string) is the formatted modification date of the given input element.

Subclasses may override to create their own label.

Parameters:
selectedEdition - the selected edition for which a label must be returned
item - if a path has been specified in selectEdition a sub element of the given selectedEdition; otherwise the same as selectedEdition
Returns:
a label for the edition side of a compare viewer

getShortEditionLabel

protected String getShortEditionLabel(ITypedElement edition,
                                      ITypedElement item,
                                      Date date)
Returns a label for identifying a node in the edition tree viewer. This implementation extracts the value for the key "workspaceTreeFormat" or "treeFormat" (in that order) from the resource bundle and passes it as the format argument to MessageFormat.format. The single format argument for MessageFormat.format ("{0}" in the format string) is the formatted modification date of the given input element.

Subclasses may override to create their own label.

Parameters:
edition - the edition for which a label must be returned
item - if a path has been specified in edition a sub element of the given edition; otherwise the same as edition
Returns:
a label of a node in the edition tree viewer
Since:
2.0

getEditionImage

protected Image getEditionImage(ITypedElement selectedEdition,
                                ITypedElement item)
Returns an image for identifying the edition side of a compare viewer. This implementation extracts the value for the key "editionLabel" from the resource bundle and passes it as the format argument to MessageFormat.format. The single format argument for MessageFormat.format ("{0}" in the format string) is the formatted modification date of the given input element.

Subclasses may override to create their own label.

Parameters:
selectedEdition - the selected edition for which a label must be returned
item - if a path has been specified in selectEdition a sub element of the given selectedEdition; otherwise the same as selectedEdition
Returns:
a label the edition side of a compare viewer
Since:
2.0

createDialogArea

protected Control createDialogArea(Composite parent)
Description copied from class: Dialog
Creates and returns the contents of the upper part of this dialog (above the button bar).

The Dialog implementation of this framework method creates and returns a new Composite with standard margins and spacing.

The returned control's layout data must be an instance of GridData.

Subclasses must override this method but may call super as in the following example:

 	Composite composite = (Composite)super.createDialogArea(parent);
 	//add controls to composite as necessary
 	return composite;
 

Overrides:
createDialogArea in class Dialog
Parameters:
parent - the parent composite to contain the dialog area
Returns:
the dialog area control

createButtonsForButtonBar

protected void createButtonsForButtonBar(Composite parent)
Description copied from class: Dialog
Adds buttons to this dialog's button bar.

The Dialog implementation of this framework method adds standard ok and cancel buttons using the createButton framework method. These standard buttons will be accessible from getCancelButton, and getOKButton. Subclasses may override.

Overrides:
createButtonsForButtonBar in class Dialog
Parameters:
parent - the button bar composite

okPressed

protected void okPressed()
Overidden to disable dismiss on double click in compare mode.

Overrides:
okPressed in class Dialog
Since:
2.0

Eclipse Platform
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.