mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-20 07:25:23 +02:00
[334839] File Content Conflict is not handled properly
This commit is contained in:
parent
b413ab74fa
commit
a06f745f24
4 changed files with 170 additions and 43 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2010 IBM Corporation and others.
|
* Copyright (c) 2002, 2011 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
* David McKnight (IBM) - [310215] SystemEditableRemoteFile.open does not behave as expected
|
* David McKnight (IBM) - [310215] SystemEditableRemoteFile.open does not behave as expected
|
||||||
* David McKnight (IBM) - [324519] SystemEditableRemoteFile throws NPE when used in headless mode
|
* David McKnight (IBM) - [324519] SystemEditableRemoteFile throws NPE when used in headless mode
|
||||||
* David McKnight (IBM) - [325502] The default editor for a file is not updated when opened in RSE explorer
|
* David McKnight (IBM) - [325502] The default editor for a file is not updated when opened in RSE explorer
|
||||||
|
* David McKnight (IBM) - [334839] File Content Conflict is not handled properly
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.files.ui.resources;
|
package org.eclipse.rse.files.ui.resources;
|
||||||
|
@ -67,6 +68,8 @@ import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.core.runtime.jobs.Job;
|
import org.eclipse.core.runtime.jobs.Job;
|
||||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||||
|
import org.eclipse.jface.text.BadLocationException;
|
||||||
|
import org.eclipse.jface.text.IDocument;
|
||||||
import org.eclipse.osgi.util.NLS;
|
import org.eclipse.osgi.util.NLS;
|
||||||
import org.eclipse.rse.core.IRSESystemType;
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
import org.eclipse.rse.core.RSECorePlugin;
|
import org.eclipse.rse.core.RSECorePlugin;
|
||||||
|
@ -114,6 +117,7 @@ import org.eclipse.ui.actions.WorkspaceModifyOperation;
|
||||||
import org.eclipse.ui.ide.IDE;
|
import org.eclipse.ui.ide.IDE;
|
||||||
import org.eclipse.ui.internal.WorkbenchPage;
|
import org.eclipse.ui.internal.WorkbenchPage;
|
||||||
import org.eclipse.ui.part.FileEditorInput;
|
import org.eclipse.ui.part.FileEditorInput;
|
||||||
|
import org.eclipse.ui.texteditor.AbstractTextEditor;
|
||||||
import org.eclipse.ui.texteditor.IDocumentProvider;
|
import org.eclipse.ui.texteditor.IDocumentProvider;
|
||||||
import org.eclipse.ui.texteditor.ITextEditor;
|
import org.eclipse.ui.texteditor.ITextEditor;
|
||||||
|
|
||||||
|
@ -1663,6 +1667,9 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
|
||||||
|
|
||||||
SystemIFileProperties properties = new SystemIFileProperties(file);
|
SystemIFileProperties properties = new SystemIFileProperties(file);
|
||||||
properties.setRemoteFileObject(this);
|
properties.setRemoteFileObject(this);
|
||||||
|
if (properties.getDirty()){
|
||||||
|
updateDirtyIndicator();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1976,6 +1983,19 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void markEditorDirty(){
|
||||||
|
ITextEditor textEditor = (ITextEditor)editor;
|
||||||
|
IDocumentProvider provider = textEditor.getDocumentProvider();
|
||||||
|
if (provider != null){
|
||||||
|
IDocument doc = provider.getDocument(textEditor.getEditorInput());
|
||||||
|
String content = doc.get();
|
||||||
|
try {
|
||||||
|
doc.replace(0, content.length(), content);
|
||||||
|
} catch (BadLocationException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void updateDirtyIndicator()
|
public void updateDirtyIndicator()
|
||||||
{
|
{
|
||||||
// for lpex dirty indicator
|
// for lpex dirty indicator
|
||||||
|
@ -1985,6 +2005,22 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
|
||||||
{
|
{
|
||||||
((ISystemTextEditor) editor).updateDirtyIndicator();
|
((ISystemTextEditor) editor).updateDirtyIndicator();
|
||||||
}
|
}
|
||||||
|
else if (editor instanceof ITextEditor){ // mark dirty by updating editor contents
|
||||||
|
// only do this if we need to mark it as dirty
|
||||||
|
SystemIFileProperties properties = new SystemIFileProperties(localFile);
|
||||||
|
if (properties.getDirty()){
|
||||||
|
if (Display.getCurrent() == null){ // if we're not on a UI thread
|
||||||
|
Display.getDefault().asyncExec(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
markEditorDirty();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
markEditorDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* Copyright (c) 2002, 2010 IBM Corporation and others. All rights reserved.
|
* Copyright (c) 2002, 2011 IBM Corporation and others. All rights reserved.
|
||||||
* This program and the accompanying materials are made available under the terms
|
* 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
|
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
@ -26,6 +26,7 @@
|
||||||
* David McKnight (IBM) - [249544] Save conflict dialog appears when saving files in the editor
|
* David McKnight (IBM) - [249544] Save conflict dialog appears when saving files in the editor
|
||||||
* David McKnight (IBM) - [256048] Saving a member open in Remote LPEX editor while Working Offline doesn't set the dirty property
|
* David McKnight (IBM) - [256048] Saving a member open in Remote LPEX editor while Working Offline doesn't set the dirty property
|
||||||
* David McKnight (IBM) - [191284] Confusing behaviour when editing a Readonly file.
|
* David McKnight (IBM) - [191284] Confusing behaviour when editing a Readonly file.
|
||||||
|
* David McKnight (IBM) - [334839] File Content Conflict is not handled properly
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.files.ui.resources;
|
package org.eclipse.rse.files.ui.resources;
|
||||||
|
@ -54,6 +55,8 @@ import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
|
||||||
import org.eclipse.swt.widgets.Display;
|
import org.eclipse.swt.widgets.Display;
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
|
import org.eclipse.ui.activities.WorkbenchActivityHelper;
|
||||||
|
import org.eclipse.ui.internal.Workbench;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class manages listening for resource changes within our temp file project
|
* This class manages listening for resource changes within our temp file project
|
||||||
|
@ -397,8 +400,8 @@ public class SystemUniversalTempFileListener extends SystemTempFileListener
|
||||||
|
|
||||||
// indicate that the temp file is no longer dirty
|
// indicate that the temp file is no longer dirty
|
||||||
properties.setDirty(false);
|
properties.setDirty(false);
|
||||||
|
if (editable.isDirty())
|
||||||
editable.updateDirtyIndicator();
|
editable.updateDirtyIndicator();
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (storedModifiedStamp == -1)
|
else if (storedModifiedStamp == -1)
|
||||||
{
|
{
|
||||||
|
@ -430,18 +433,27 @@ public class SystemUniversalTempFileListener extends SystemTempFileListener
|
||||||
final SystemEditableRemoteFile remoteEdit = editable;
|
final SystemEditableRemoteFile remoteEdit = editable;
|
||||||
final IFile tFile = tempFile;
|
final IFile tFile = tempFile;
|
||||||
final IRemoteFile rFile = remoteFile;
|
final IRemoteFile rFile = remoteFile;
|
||||||
|
final SystemIFileProperties fProperties = properties;
|
||||||
|
|
||||||
// upload is run in a job, so the conflict action/dialog needs to run in UI thread
|
// upload is run in a job, so the conflict action/dialog needs to run in UI thread
|
||||||
Display.getDefault().asyncExec(new Runnable()
|
Display.getDefault().asyncExec(new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
Shell shell = RSEUIPlugin.getTheSystemRegistryUI().getShell();
|
boolean closing = Workbench.getInstance().isClosing();
|
||||||
|
Shell shell = null;
|
||||||
|
if (closing){
|
||||||
|
shell = Display.getDefault().getActiveShell();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
shell = RSEUIPlugin.getTheSystemRegistryUI().getShell();
|
||||||
|
}
|
||||||
SystemUploadConflictAction conflictAction = new SystemUploadConflictAction(shell, tFile, rFile, remoteNewer);
|
SystemUploadConflictAction conflictAction = new SystemUploadConflictAction(shell, tFile, rFile, remoteNewer);
|
||||||
conflictAction.run();
|
conflictAction.run();
|
||||||
|
if (fProperties.getDirty()){
|
||||||
remoteEdit.updateDirtyIndicator();
|
remoteEdit.updateDirtyIndicator();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2010 IBM Corporation and others.
|
* Copyright (c) 2002, 2011 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -25,12 +25,14 @@
|
||||||
* Kevin Doyle (IBM) - [242389] [usability] RSE Save Conflict dialog should indicate which file is in conflict
|
* Kevin Doyle (IBM) - [242389] [usability] RSE Save Conflict dialog should indicate which file is in conflict
|
||||||
* David McKnight (IBM) - [267247] Wrong encoding
|
* David McKnight (IBM) - [267247] Wrong encoding
|
||||||
* David McKnight (IBM) - [330804] Change the default selection of Save Conflict dialog
|
* David McKnight (IBM) - [330804] Change the default selection of Save Conflict dialog
|
||||||
|
* David McKnight (IBM) - [334839] File Content Conflict is not handled properly
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.files.ui.actions;
|
package org.eclipse.rse.internal.files.ui.actions;
|
||||||
|
|
||||||
|
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
@ -67,6 +69,8 @@ import org.eclipse.rse.ui.actions.SystemBaseAction;
|
||||||
import org.eclipse.rse.ui.dialogs.SystemPromptDialog;
|
import org.eclipse.rse.ui.dialogs.SystemPromptDialog;
|
||||||
import org.eclipse.rse.ui.messages.SystemMessageDialog;
|
import org.eclipse.rse.ui.messages.SystemMessageDialog;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.events.KeyEvent;
|
||||||
|
import org.eclipse.swt.events.KeyListener;
|
||||||
import org.eclipse.swt.events.SelectionEvent;
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
import org.eclipse.swt.events.SelectionListener;
|
import org.eclipse.swt.events.SelectionListener;
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
|
@ -83,6 +87,7 @@ import org.eclipse.ui.IEditorInput;
|
||||||
import org.eclipse.ui.IEditorPart;
|
import org.eclipse.ui.IEditorPart;
|
||||||
import org.eclipse.ui.IWorkbenchPage;
|
import org.eclipse.ui.IWorkbenchPage;
|
||||||
import org.eclipse.ui.IWorkbenchWindow;
|
import org.eclipse.ui.IWorkbenchWindow;
|
||||||
|
import org.eclipse.ui.internal.Workbench;
|
||||||
import org.eclipse.ui.part.FileEditorInput;
|
import org.eclipse.ui.part.FileEditorInput;
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,8 +146,12 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
}
|
}
|
||||||
|
|
||||||
ReopenAction reopen = new ReopenAction(_tempFile, _saveasFile);
|
ReopenAction reopen = new ReopenAction(_tempFile, _saveasFile);
|
||||||
|
if (Display.getCurrent() != null){
|
||||||
|
reopen.run();
|
||||||
|
}
|
||||||
|
else {
|
||||||
Display.getDefault().asyncExec(reopen);
|
Display.getDefault().asyncExec(reopen);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Status.OK_STATUS;
|
return Status.OK_STATUS;
|
||||||
}
|
}
|
||||||
|
@ -167,11 +176,18 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
|
|
||||||
fs.download(_remoteFile, _tempFile.getLocation().makeAbsolute().toOSString(), srcEncoding, monitor);
|
fs.download(_remoteFile, _tempFile.getLocation().makeAbsolute().toOSString(), srcEncoding, monitor);
|
||||||
|
|
||||||
|
// need to refresh this otherwise the local resource will be out of sync
|
||||||
|
_tempFile.refreshLocal(IResource.DEPTH_ONE, new NullProgressMonitor());
|
||||||
properties.setRemoteFileTimeStamp(_remoteFile.getLastModified());
|
properties.setRemoteFileTimeStamp(_remoteFile.getLastModified());
|
||||||
//properties.setRemoteFileTimeStamp(-1);
|
|
||||||
|
|
||||||
properties.setDirty(false);
|
properties.setDirty(false);
|
||||||
properties.setUsedBinaryTransfer(_remoteFile.isBinary());
|
properties.setUsedBinaryTransfer(_remoteFile.isBinary());
|
||||||
|
|
||||||
|
Display.getDefault().asyncExec(new Runnable(){
|
||||||
|
public void run(){
|
||||||
|
IEditorPart part = getEditorFor(_tempFile);
|
||||||
|
part.setFocus();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (final SystemMessageException e)
|
catch (final SystemMessageException e)
|
||||||
{
|
{
|
||||||
|
@ -275,6 +291,25 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
_overwriteLocal = _overwriteLocalButton.getSelection();
|
_overwriteLocal = _overwriteLocalButton.getSelection();
|
||||||
_overwriteRemote = _overwriteRemoteButton.getSelection();
|
_overwriteRemote = _overwriteRemoteButton.getSelection();
|
||||||
_saveas = _saveasButton.getSelection();
|
_saveas = _saveasButton.getSelection();
|
||||||
|
if (_saveas){
|
||||||
|
if (_saveasLocation == null){
|
||||||
|
try {
|
||||||
|
_saveasLocation = _remoteFile.getParentRemoteFileSubSystem().getRemoteFileObject(_saveasFileEntry.getText(), new NullProgressMonitor());
|
||||||
|
} catch (SystemMessageException e) {
|
||||||
|
}
|
||||||
|
if (_saveasLocation == null){
|
||||||
|
enableOkButton(false);
|
||||||
|
_errorMessage = new SimpleSystemMessage(Activator.PLUGIN_ID,
|
||||||
|
ISystemFileConstants.MSG_VALIDATE_PATH_EMPTY,
|
||||||
|
IStatus.ERROR,
|
||||||
|
FileResources.MSG_VALIDATE_PATH_EMPTY,
|
||||||
|
FileResources.MSG_VALIDATE_PATH_EMPTY_DETAILS);
|
||||||
|
|
||||||
|
setErrorMessage(_errorMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,6 +409,23 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
|
|
||||||
_saveasFileEntry = new Text(s, SWT.BORDER);
|
_saveasFileEntry = new Text(s, SWT.BORDER);
|
||||||
_saveasFileEntry.setEnabled(true);
|
_saveasFileEntry.setEnabled(true);
|
||||||
|
_saveasFileEntry.addKeyListener(new KeyListener() {
|
||||||
|
|
||||||
|
public void keyReleased(KeyEvent e) {
|
||||||
|
String loc = _saveasFileEntry.getText();
|
||||||
|
if (loc != null && loc.length() > 0){
|
||||||
|
_errorMessage = null;
|
||||||
|
setErrorMessage(_errorMessage);
|
||||||
|
enableOkButton(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
enableOkButton(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
GridData fileEntryData = new GridData(GridData.FILL_BOTH);
|
GridData fileEntryData = new GridData(GridData.FILL_BOTH);
|
||||||
fileEntryData.widthHint = 100;
|
fileEntryData.widthHint = 100;
|
||||||
|
@ -525,30 +577,6 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
_saveasFile = saveasFile;
|
_saveasFile = saveasFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEditorPart getEditorFor(IFile tempFile)
|
|
||||||
{
|
|
||||||
|
|
||||||
IWorkbenchWindow window = SystemBasePlugin.getActiveWorkbenchWindow();
|
|
||||||
if (window != null)
|
|
||||||
{
|
|
||||||
IWorkbenchPage page = window.getActivePage();
|
|
||||||
if (page != null)
|
|
||||||
{
|
|
||||||
IEditorPart editor = page.getActiveEditor();
|
|
||||||
IEditorInput input = editor.getEditorInput();
|
|
||||||
if (input instanceof FileEditorInput)
|
|
||||||
{
|
|
||||||
FileEditorInput finput = (FileEditorInput) input;
|
|
||||||
if (finput.getFile().getFullPath().equals(tempFile.getFullPath()))
|
|
||||||
{
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
@ -589,6 +617,21 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
// editor closed, possibly due to shutdown
|
||||||
|
// can't manipulate editors, but we can at least make the original temp file uptodate
|
||||||
|
SystemIFileProperties properties = new SystemIFileProperties(_tempFile);
|
||||||
|
SystemEditableRemoteFile edit = (SystemEditableRemoteFile)properties.getRemoteFileObject();
|
||||||
|
if (edit != null){
|
||||||
|
try {
|
||||||
|
edit.download(getShell());
|
||||||
|
edit.addAsListener();
|
||||||
|
edit.setLocalResourceProperties();
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -637,9 +680,15 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
{
|
{
|
||||||
IRemoteFile remoteFile = cnfDialog.getSaveasLocation();
|
IRemoteFile remoteFile = cnfDialog.getSaveasLocation();
|
||||||
BackgroundSaveasJob sjob = new BackgroundSaveasJob(remoteFile);
|
BackgroundSaveasJob sjob = new BackgroundSaveasJob(remoteFile);
|
||||||
|
|
||||||
|
if (Workbench.getInstance().isClosing()){
|
||||||
|
sjob.run(new NullProgressMonitor());
|
||||||
|
}
|
||||||
|
else {
|
||||||
sjob.schedule();
|
sjob.schedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// cancelled dialog, so no remote synchronization
|
// cancelled dialog, so no remote synchronization
|
||||||
|
@ -647,4 +696,30 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
|
||||||
properties.setDirty(true);
|
properties.setDirty(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEditorPart getEditorFor(IFile tempFile)
|
||||||
|
{
|
||||||
|
|
||||||
|
IWorkbenchWindow window = SystemBasePlugin.getActiveWorkbenchWindow();
|
||||||
|
if (window != null)
|
||||||
|
{
|
||||||
|
IWorkbenchPage page = window.getActivePage();
|
||||||
|
if (page != null)
|
||||||
|
{
|
||||||
|
IEditorPart editor = page.getActiveEditor();
|
||||||
|
IEditorInput input = editor.getEditorInput();
|
||||||
|
if (input instanceof FileEditorInput)
|
||||||
|
{
|
||||||
|
FileEditorInput finput = (FileEditorInput) input;
|
||||||
|
if (finput.getFile().getFullPath().equals(tempFile.getFullPath()))
|
||||||
|
{
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* Copyright (c) 2007, 2009 IBM Corporation and others. All rights reserved.
|
* Copyright (c) 2007, 2011 IBM Corporation and others. All rights reserved.
|
||||||
* This program and the accompanying materials are made available under the terms
|
* 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
|
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
* Richie Yu (IBM) - [241716] Handle change expired password
|
* Richie Yu (IBM) - [241716] Handle change expired password
|
||||||
* Don Yantzi (IBM) - [233970] Handle messages provided by ICredentialsValidator
|
* Don Yantzi (IBM) - [233970] Handle messages provided by ICredentialsValidator
|
||||||
* David Dykstal (IBM) - [261047] StandardCredentialsProvider does not cause a reacquire of a password when validation fails in a background thread
|
* David Dykstal (IBM) - [261047] StandardCredentialsProvider does not cause a reacquire of a password when validation fails in a background thread
|
||||||
|
* David McKnight (IBM) - [334839] File Content Conflict is not handled properly
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
package org.eclipse.rse.ui.subsystems;
|
package org.eclipse.rse.ui.subsystems;
|
||||||
|
|
||||||
|
@ -79,6 +80,9 @@ public class StandardCredentialsProvider extends AbstractCredentialsProvider {
|
||||||
*/
|
*/
|
||||||
public void run() {
|
public void run() {
|
||||||
Shell shell = getShell();
|
Shell shell = getShell();
|
||||||
|
if (shell == null){
|
||||||
|
shell = new Shell(); // need this for the case of being prompted during workbench shutdown
|
||||||
|
}
|
||||||
if (shell != null) {
|
if (shell != null) {
|
||||||
ISystemPasswordPromptDialog dialog = getPasswordPromptDialog(shell);
|
ISystemPasswordPromptDialog dialog = getPasswordPromptDialog(shell);
|
||||||
dialog.setSystemInput(getConnectorService());
|
dialog.setSystemInput(getConnectorService());
|
||||||
|
|
Loading…
Add table
Reference in a new issue