Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 107318 Details for
Bug 240298
[Dialogs] History in the "Compare with" dialog
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
History for each "file" in "Compare With" dialog
history-patch (text/plain), 26.15 KB, created by
Aleksandra Wozniak
on 2008-07-14 07:45:19 EDT
(
hide
)
Description:
History for each "file" in "Compare With" dialog
Filename:
MIME Type:
Creator:
Aleksandra Wozniak
Created:
2008-07-14 07:45:19 EDT
Size:
26.15 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.compare >Index: compare/org/eclipse/compare/internal/CompareMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java,v >retrieving revision 1.17.4.1 >diff -u -r1.17.4.1 CompareMessages.java >--- compare/org/eclipse/compare/internal/CompareMessages.java 10 Jul 2008 10:57:09 -0000 1.17.4.1 >+++ compare/org/eclipse/compare/internal/CompareMessages.java 14 Jul 2008 11:42:06 -0000 >@@ -118,6 +118,9 @@ > public static String CompareWithOther_error_empty; > public static String CompareWithOther_clearAll; > public static String CompareWithOther_clear; >+ public static String CompareWithOther_clipboard; >+ public static String CompareWithOther_tmp_file_path; >+ public static String CompareWithOther_clipboard_files; > > static { > NLS.initializeMessages(BUNDLE_NAME, CompareMessages.class); >Index: compare/org/eclipse/compare/internal/CompareMessages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties,v >retrieving revision 1.27.4.1 >diff -u -r1.27.4.1 CompareMessages.properties >--- compare/org/eclipse/compare/internal/CompareMessages.properties 10 Jul 2008 10:57:09 -0000 1.27.4.1 >+++ compare/org/eclipse/compare/internal/CompareMessages.properties 14 Jul 2008 11:42:06 -0000 >@@ -127,6 +127,9 @@ > CompareWithOther_dialogTitle=Compare with Other Resource... > CompareWithOther_dialogMessage=Select resources to compare > CompareWithOther_error_not_comparable=Selected resources are not comparable. >-CompareWithOther_error_empty=Both left and right panel must not be empty. >+CompareWithOther_error_empty=Both left and right panel must contain a valid path to resource from workspace. > CompareWithOther_clearAll=Clear All > CompareWithOther_clear=Clear >+CompareWithOther_clipboard=From clipboard >+CompareWithOther_tmp_file_path=clipboard >+CompareWithOther_clipboard_files=ClipboardTmpFiles >\ No newline at end of file >Index: compare/org/eclipse/compare/internal/CompareAction.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java,v >retrieving revision 1.20.8.1 >diff -u -r1.20.8.1 CompareAction.java >--- compare/org/eclipse/compare/internal/CompareAction.java 10 Jul 2008 10:57:09 -0000 1.20.8.1 >+++ compare/org/eclipse/compare/internal/CompareAction.java 14 Jul 2008 11:42:06 -0000 >@@ -19,7 +19,6 @@ > import org.eclipse.ui.IWorkbenchPart; > import org.eclipse.compare.CompareConfiguration; > import org.eclipse.compare.CompareUI; >-import org.eclipse.core.resources.IResource; > > > /* >@@ -27,31 +26,17 @@ > */ > public class CompareAction extends BaseCompareAction implements IObjectActionDelegate { > >- private static ResourceCompareInput fInput; >- private static IWorkbenchPage fWorkbenchPage; >+ private ResourceCompareInput fInput; >+ private IWorkbenchPage fWorkbenchPage; >+ > > public void run(ISelection selection) { > if (fInput != null) { > // Pass the shell so setSelection can prompt the user for which > // resource should be the ancestor >- boolean ok = fInput.setSelection(selection, fWorkbenchPage >- .getWorkbenchWindow().getShell()); >- if (!ok) >- return; >- fInput.initializeCompareConfiguration(); >- CompareUI.openCompareEditorOnPage(fInput, fWorkbenchPage); >- fInput = null; // don't reuse this input! >- } >- } >- >- public static void run(IResource[] resources) { >- fWorkbenchPage = CompareUIPlugin.getActiveWorkbench() >- .getActiveWorkbenchWindow().getActivePage(); >- if (fInput != null) { >- boolean ok = fInput.setSelection(resources, fWorkbenchPage >- .getWorkbenchWindow().getShell()); >- if (!ok) >- return; >+ boolean ok = fInput.setSelection(selection, >+ fWorkbenchPage.getWorkbenchWindow().getShell()); >+ if (!ok) return; > fInput.initializeCompareConfiguration(); > CompareUI.openCompareEditorOnPage(fInput, fWorkbenchPage); > fInput= null; // don't reuse this input! >@@ -73,16 +58,6 @@ > return fInput.isEnabled(selection); > } > >- public static boolean isEnabled(IResource[] resources) { >- if (fInput == null) { >- CompareConfiguration cc = new CompareConfiguration(); >- cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean( >- false)); >- fInput = new ResourceCompareInput(cc); >- } >- return fInput.isEnabled(resources); >- } >- > public void setActivePart(IAction action, IWorkbenchPart targetPart) { > fWorkbenchPage= targetPart.getSite().getPage(); > } >Index: compare/org/eclipse/compare/internal/Messages.java >=================================================================== >RCS file: compare/org/eclipse/compare/internal/Messages.java >diff -N compare/org/eclipse/compare/internal/Messages.java >--- compare/org/eclipse/compare/internal/Messages.java 16 Mar 2007 19:53:09 -0000 1.3 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,33 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2005, 2006 IBM Corporation and others. >- * 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 Corporation - initial API and implementation >- *******************************************************************************/ >-package org.eclipse.compare.internal; >- >-import com.ibm.icu.text.MessageFormat; >- >-/** >- * Helper class to format message strings. >- * >- * @since 3.1 >- */ >-public class Messages { >- >- public static String format(String message, Object object) { >- return MessageFormat.format(message, new Object[] { object}); >- } >- >- public static String format(String message, Object[] objects) { >- return MessageFormat.format(message, objects); >- } >- >- private Messages() { >- // Not for instantiation >- } >-} >Index: compare/org/eclipse/compare/internal/ResourceCompareInput.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java,v >retrieving revision 1.38.8.1 >diff -u -r1.38.8.1 ResourceCompareInput.java >--- compare/org/eclipse/compare/internal/ResourceCompareInput.java 10 Jul 2008 10:57:09 -0000 1.38.8.1 >+++ compare/org/eclipse/compare/internal/ResourceCompareInput.java 14 Jul 2008 11:42:06 -0000 >@@ -201,14 +201,11 @@ > // to use as the ancestor. Returns false if the user cancels the prompt, > // true otherwise. > boolean setSelection(ISelection s, Shell shell) { >- IResource[] selection = Utilities.getResources(s); >- return setSelection(selection, shell); >- } >- >- boolean setSelection(IResource[] selection, Shell shell) { >- >- fThreeWay = selection.length == 3; >+ >+ IResource[] selection= Utilities.getResources(s); > >+ fThreeWay= selection.length == 3; >+ > if (fThreeWay) { > SelectAncestorDialog dialog = > new SelectAncestorDialog(shell, selection); >@@ -236,26 +233,21 @@ > * Returns true if compare can be executed for the given selection. > */ > public boolean isEnabled(ISelection s) { >- >- IResource[] selection = Utilities.getResources(s); >- return isEnabled(selection); >- } >- >- public boolean isEnabled(IResource[] resources) { >- if (resources.length < 2 || resources.length > 3) >+ >+ IResource[] selection= Utilities.getResources(s); >+ if (selection.length < 2 || selection.length > 3) > return false; > >- boolean threeWay= resources.length == 3; >+ boolean threeWay= selection.length == 3; > >- if (threeWay) { >+ if (threeWay) > // It only makes sense if they're all mutually comparable. > // If not, the user should compare two of them. >- return comparable(resources[0], resources[1]) >- && comparable(resources[0], resources[2]) >- && comparable(resources[1], resources[2]); >- } >- >- return comparable(resources[0], resources[1]); >+ return comparable(selection[0], selection[1]) >+ && comparable(selection[0], selection[2]) >+ && comparable(selection[1], selection[2]); >+ >+ return comparable(selection[0], selection[1]); > } > > /** >Index: compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java >=================================================================== >RCS file: compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java >diff -N compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,61 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 Aleksandra Wozniak and others. >+ * 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: >+ * Aleksandra Wozniak (aleksandra.k.wozniak@gmail.com) - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.compare.internal; >+ >+import org.eclipse.core.resources.IResource; >+import org.eclipse.jface.action.IAction; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IObjectActionDelegate; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.ui.PlatformUI; >+ >+/** >+ * The "Compare with other resource" action >+ * >+ * @since 3.4 >+ */ >+public class CompareWithOtherResourceAction implements IObjectActionDelegate { >+ >+ Shell shell; >+ CompareWithOtherResourceDialog dialog; >+ private ISelection fselection; >+ private IWorkbenchPart fWorkbenchPart; >+ >+ public CompareWithOtherResourceAction() { >+ shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); >+ } >+ >+ public void setActivePart(IAction action, IWorkbenchPart targetPart) { >+ fWorkbenchPart = targetPart; >+ } >+ >+ public void run(IAction action) { >+ dialog = new CompareWithOtherResourceDialog(shell, fselection); >+ int returnCode = dialog.open(); >+ >+ if (returnCode == IDialogConstants.OK_ID) { >+ IResource[] resources = dialog.getResult(); >+ StructuredSelection ss = new StructuredSelection(resources); >+ CompareAction ca = new CompareAction(); >+ ca.setActivePart(null, fWorkbenchPart); >+ if (ca.isEnabled(ss)) >+ ca.run(ss); >+ } >+ } >+ >+ public void selectionChanged(IAction action, ISelection selection) { >+ fselection = selection; >+ } >+ >+} >Index: compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java >=================================================================== >RCS file: compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java >diff -N compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,483 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 Aleksandra Wozniak and others. >+ * 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: >+ * Aleksandra Wozniak (aleksandra.k.wozniak@gmail.com) - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.compare.internal; >+ >+import org.eclipse.compare.CompareConfiguration; >+import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.IWorkspaceRoot; >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.dialogs.IMessageProvider; >+import org.eclipse.jface.dialogs.TitleAreaDialog; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.dnd.DND; >+import org.eclipse.swt.dnd.DragSource; >+import org.eclipse.swt.dnd.DragSourceEvent; >+import org.eclipse.swt.dnd.DragSourceListener; >+import org.eclipse.swt.dnd.DropTarget; >+import org.eclipse.swt.dnd.DropTargetEvent; >+import org.eclipse.swt.dnd.DropTargetListener; >+import org.eclipse.swt.dnd.TextTransfer; >+import org.eclipse.swt.dnd.Transfer; >+import org.eclipse.swt.events.ModifyEvent; >+import org.eclipse.swt.events.ModifyListener; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.events.SelectionListener; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Combo; >+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; >+import org.eclipse.ui.forms.events.ExpansionAdapter; >+import org.eclipse.ui.forms.events.ExpansionEvent; >+import org.eclipse.ui.forms.widgets.ExpandableComposite; >+import org.eclipse.ui.part.ResourceTransfer; >+ >+/** >+ * This is a dialog that can invoke the compare editor on chosen files. >+ * <p> >+ * This class can be used as is or can be subclassed. >+ * >+ * @since 3.4 >+ */ >+public class CompareWithOtherResourceDialog extends TitleAreaDialog { >+ >+ private int CLEAR_RETURN_CODE = 150; // any number != 0 >+ >+ private class FileTextDragListener implements DragSourceListener { >+ >+ private InternalSection section; >+ >+ public FileTextDragListener(InternalSection section) { >+ this.section = section; >+ } >+ >+ public void dragFinished(DragSourceEvent event) { >+ section.fileCombo.setText(""); //$NON-NLS-1$ >+ } >+ >+ public void dragSetData(DragSourceEvent event) { >+ if (TextTransfer.getInstance().isSupportedType(event.dataType)) >+ event.data = section.fileCombo.getText(); >+ } >+ >+ public void dragStart(DragSourceEvent event) { >+ if (section.fileCombo.getText() == null) >+ event.doit = false; >+ } >+ } >+ >+ private class FileTextDropListener implements DropTargetListener { >+ >+ private InternalSection section; >+ private ResourceTransfer resourceTransfer; >+ private TextTransfer textTransfer; >+ >+ public FileTextDropListener(InternalSection section) { >+ this.section = section; >+ resourceTransfer = ResourceTransfer.getInstance(); >+ textTransfer = TextTransfer.getInstance(); >+ } >+ >+ public void dragEnter(DropTargetEvent event) { >+ >+ if (event.detail == DND.DROP_DEFAULT) { >+ if ((event.operations & DND.DROP_COPY) != 0) >+ event.detail = DND.DROP_COPY; >+ else >+ event.detail = DND.DROP_NONE; >+ } >+ >+ for (int i = 0; i < event.dataTypes.length; i++) { >+ if (resourceTransfer.isSupportedType(event.dataTypes[i])) { >+ event.currentDataType = event.dataTypes[i]; >+ if (event.detail != DND.DROP_COPY) >+ event.detail = DND.DROP_NONE; >+ break; >+ } >+ } >+ } >+ >+ public void dragLeave(DropTargetEvent event) { >+ // intentionally empty >+ } >+ >+ public void dragOperationChanged(DropTargetEvent event) { >+ >+ if (event.detail == DND.DROP_DEFAULT) { >+ if ((event.operations & DND.DROP_COPY) != 0) >+ event.detail = DND.DROP_COPY; >+ else >+ event.detail = DND.DROP_NONE; >+ } else if (resourceTransfer.isSupportedType(event.currentDataType)) { >+ if (event.detail != DND.DROP_COPY) >+ event.detail = DND.DROP_NONE; >+ } >+ } >+ >+ public void dragOver(DropTargetEvent event) { >+ // intentionally empty >+ } >+ >+ public void drop(DropTargetEvent event) { >+ >+ if (textTransfer.isSupportedType(event.currentDataType)) { >+ String txt = (String) event.data; >+ section.setResource(ResourcesPlugin.getWorkspace().getRoot() >+ .findMember(txt)); >+ } else if (resourceTransfer.isSupportedType(event.currentDataType)) { >+ IResource[] files = (IResource[]) event.data; >+ section.setResource(files[0]); >+ } >+ >+ updateErrorInfo(); >+ } >+ >+ public void dropAccept(DropTargetEvent event) { >+ // intentionally empty >+ } >+ >+ } >+ >+ private abstract class InternalSection { >+ >+ protected Group group; >+ private Combo fileCombo; >+ private IResource resource; >+ private Button clearButton; >+ >+ public InternalSection(Composite parent) { >+ createContents(parent); >+ } >+ >+ public InternalSection() { >+ // not to instantiate >+ } >+ >+ public void createContents(Composite parent) { >+ createGroup(parent); >+ createFileLabel(); >+ createFileCombo(); >+ createClearButton(group); >+ initDrag(); >+ initDrop(); >+ } >+ >+ public IResource getResource() { >+ return resource; >+ } >+ >+ public void setResource(IResource resource) { >+ this.resource = resource; >+ String txt = resource.getFullPath().toString(); >+ fileCombo.add(txt); >+ fileCombo.setText(txt); >+ } >+ >+ public void setResource(String s) { >+ IResource tmp = ResourcesPlugin.getWorkspace().getRoot() >+ .findMember(s); >+ if (tmp instanceof IWorkspaceRoot) >+ resource = null; >+ else >+ resource = tmp; >+ >+ } >+ >+ protected void clearResource() { >+ resource = null; >+ fileCombo.setText(""); //$NON-NLS-1$ >+ updateErrorInfo(); >+ } >+ >+ protected void initDrag() { >+ DragSource source = new DragSource(fileCombo, DND.DROP_MOVE >+ | DND.DROP_COPY); >+ Transfer[] types = new Transfer[] { TextTransfer.getInstance(), >+ ResourceTransfer.getInstance() }; >+ source.setTransfer(types); >+ source.addDragListener(new FileTextDragListener(this)); >+ } >+ >+ protected void initDrop() { >+ DropTarget target = new DropTarget(fileCombo, DND.DROP_MOVE >+ | DND.DROP_COPY | DND.DROP_DEFAULT); >+ Transfer[] types = new Transfer[] { TextTransfer.getInstance(), >+ ResourceTransfer.getInstance() }; >+ target.setTransfer(types); >+ target.addDropListener(new FileTextDropListener(this)); >+ } >+ >+ protected void createGroup(Composite parent) { >+ group = new Group(parent, SWT.NONE); >+ group.setLayout(new GridLayout(3, false)); >+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); >+ } >+ >+ protected void createFileCombo() { >+ fileCombo = new Combo(group, SWT.NONE); >+ fileCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, >+ false)); >+ fileCombo.setItems(new String[] { "" }); //$NON-NLS-1$ >+ fileCombo.setText(fileCombo.getItem(0)); >+ >+ fileCombo.addModifyListener(new ModifyListener() { >+ public void modifyText(ModifyEvent e) { >+ setResource(fileCombo.getText()); >+ updateErrorInfo(); >+ } >+ }); >+ >+ fileCombo.addSelectionListener(new SelectionListener() { >+ >+ public void widgetDefaultSelected(SelectionEvent e) { >+ widgetSelected(e); >+ } >+ >+ public void widgetSelected(SelectionEvent e) { >+ setResource(fileCombo.getText()); >+ updateErrorInfo(); >+ } >+ >+ }); >+ } >+ >+ protected void createFileLabel() { >+ final Label fileLabel = new Label(group, SWT.NONE); >+ fileLabel.setText(CompareMessages.CompareWithOther_fileLabel); >+ } >+ >+ protected void createClearButton(Composite parent) { >+ clearButton = createButton(parent, CLEAR_RETURN_CODE, >+ CompareMessages.CompareWithOther_clear, false); >+ clearButton.addSelectionListener(new SelectionListener() { >+ public void widgetDefaultSelected(SelectionEvent e) { >+ widgetSelected(e); >+ } >+ >+ public void widgetSelected(SelectionEvent e) { >+ clearResource(); >+ } >+ }); >+ } >+ } >+ >+ private class InternalGroup extends InternalSection { >+ >+ public InternalGroup(Composite parent) { >+ createContents(parent); >+ } >+ >+ public void setText(String text) { >+ group.setText(text); >+ } >+ >+ public void setLayoutData(GridData layoutData) { >+ group.setLayoutData(layoutData); >+ } >+ } >+ >+ private class InternalExpandable extends InternalSection { >+ >+ private ExpandableComposite expandable; >+ >+ public InternalExpandable(Composite parent) { >+ createContents(parent); >+ } >+ >+ public void createGroup(Composite parent) { >+ final Composite p = parent; >+ expandable = new ExpandableComposite(parent, SWT.NONE, >+ ExpandableComposite.TREE_NODE | ExpandableComposite.TWISTIE); >+ super.createGroup(expandable); >+ expandable.setClient(group); >+ expandable.addExpansionListener(new ExpansionAdapter() { >+ public void expansionStateChanged(ExpansionEvent e) { >+ p.getShell().pack(); >+ } >+ }); >+ } >+ >+ public void setText(String text) { >+ expandable.setText(text); >+ group.setText(text); >+ } >+ >+ public void setLayoutData(GridData layoutData) { >+ expandable.setLayoutData(layoutData); >+ } >+ } >+ >+ private Button okButton, clearAllButton; >+ private InternalGroup rightPanel, leftPanel; >+ private InternalExpandable ancestorPanel; >+ private ISelection fselection; >+ >+ /** >+ * Creates the dialog. >+ * >+ * @param shell >+ * a shell >+ * @param selection >+ * if the selection is not null, it will be set as initial files >+ * for comparison >+ * @since 3.4 >+ */ >+ protected CompareWithOtherResourceDialog(Shell shell, ISelection selection) { >+ super(shell); >+ setShellStyle(SWT.MODELESS | SWT.RESIZE | SWT.MAX); >+ fselection = selection; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see >+ * org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets >+ * .Composite) >+ */ >+ protected Control createDialogArea(Composite parent) { >+ >+ Composite mainPanel = new Composite(parent, SWT.NULL); >+ mainPanel.setLayout(new GridLayout(2, true)); >+ mainPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); >+ >+ ancestorPanel = new InternalExpandable(mainPanel); >+ ancestorPanel.setText(CompareMessages.CompareWithOther_ancestor); >+ GridData ancestorGD = new GridData(SWT.FILL, SWT.FILL, true, true); >+ ancestorGD.horizontalSpan = 2; >+ ancestorPanel.setLayoutData(ancestorGD); >+ >+ rightPanel = new InternalGroup(mainPanel); >+ rightPanel.setText(CompareMessages.CompareWithOther_rightPanel); >+ rightPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); >+ >+ leftPanel = new InternalGroup(mainPanel); >+ leftPanel.setText(CompareMessages.CompareWithOther_leftPanel); >+ leftPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); >+ >+ setSelection(fselection); >+ getShell().setText(CompareMessages.CompareWithOther_dialogTitle); >+ setTitle(CompareMessages.CompareWithOther_dialogMessage); >+ >+ return mainPanel; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see >+ * org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse >+ * .swt.widgets.Composite) >+ */ >+ protected void createButtonsForButtonBar(Composite parent) { >+ >+ super.createButtonsForButtonBar(parent); >+ okButton = getButton(IDialogConstants.OK_ID); >+ >+ clearAllButton = createButton(parent, CLEAR_RETURN_CODE, >+ CompareMessages.CompareWithOther_clearAll, false); >+ clearAllButton.addSelectionListener(new SelectionListener() { >+ public void widgetDefaultSelected(SelectionEvent e) { >+ widgetSelected(e); >+ } >+ >+ public void widgetSelected(SelectionEvent e) { >+ leftPanel.clearResource(); >+ rightPanel.clearResource(); >+ ancestorPanel.clearResource(); >+ } >+ }); >+ >+ updateErrorInfo(); >+ } >+ >+ private void setSelection(ISelection selection) { >+ IResource[] selectedResources = Utilities.getResources(selection); >+ switch (selectedResources.length) { >+ case 0: >+ break; >+ case 1: >+ leftPanel.setResource(selectedResources[0]); >+ break; >+ case 2: >+ leftPanel.setResource(selectedResources[0]); >+ rightPanel.setResource(selectedResources[1]); >+ break; >+ case 3: >+ ancestorPanel.setResource(selectedResources[0]); >+ ancestorPanel.expandable.setExpanded(true); >+ leftPanel.setResource(selectedResources[1]); >+ rightPanel.setResource(selectedResources[2]); >+ break; >+ } >+ } >+ >+ private boolean comparePossible() { >+ IResource[] resources; >+ if (ancestorPanel.getResource() == null) >+ resources = new IResource[] { leftPanel.getResource(), >+ rightPanel.getResource() }; >+ else >+ resources = new IResource[] { ancestorPanel.getResource(), >+ leftPanel.getResource(), rightPanel.getResource() }; >+ >+ ResourceCompareInput r = new ResourceCompareInput( >+ new CompareConfiguration()); >+ return r.isEnabled(new StructuredSelection(resources)); >+ } >+ >+ private void updateErrorInfo() { >+ if (okButton != null) { >+ if (leftPanel.getResource() == null >+ || rightPanel.getResource() == null) { >+ setMessage(CompareMessages.CompareWithOther_error_empty, >+ IMessageProvider.ERROR); >+ okButton.setEnabled(false); >+ } else if (!comparePossible()) { >+ setMessage( >+ CompareMessages.CompareWithOther_error_not_comparable, >+ IMessageProvider.ERROR); >+ okButton.setEnabled(false); >+ } else { >+ setMessage(null); >+ okButton.setEnabled(true); >+ } >+ } >+ } >+ >+ /** >+ * Returns table with selected resources. If any resource wasn't chosen in >+ * the ancestor panel, table has only two elements -- resources chosen in >+ * left and right panel. In the other case table contains all three >+ * resources. >+ * >+ * @return table with selected resources >+ */ >+ public IResource[] getResult() { >+ IResource[] resources; >+ IResource rightResource = rightPanel.getResource(); >+ IResource leftResource = leftPanel.getResource(); >+ IResource ancestorResource = ancestorPanel.getResource(); >+ if (ancestorResource == null) >+ resources = new IResource[] { leftResource, rightResource }; >+ else >+ resources = new IResource[] { ancestorResource, leftResource, >+ rightResource }; >+ return resources; >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 240298
:
107318
|
110784
|
111198