/******************************************************************************* * Copyright (c) 2000, 2008 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.ltk.internal.ui.refactoring; import org.eclipse.che.dto.server.DtoFactory; import org.eclipse.che.ide.ext.java.shared.dto.refactoring.ChangePreview; import org.eclipse.core.runtime.AssertionFailedException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.internal.ui.JavaPlugin; import org.eclipse.jface.text.IRegion; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.GroupCategory; import org.eclipse.ltk.core.refactoring.TextEditBasedChange; import org.eclipse.ltk.core.refactoring.TextEditBasedChangeGroup; import org.eclipse.ltk.ui.refactoring.ChangePreviewViewerInput; import org.eclipse.ltk.ui.refactoring.IChangePreviewViewer; public class TextEditChangePreviewViewer implements IChangePreviewViewer { // private ComparePreviewer fViewer; private static class TextEditBasedChangeInput extends ChangePreviewViewerInput { TextEditBasedChangeGroup group; int surroundingLines; TextEditBasedChangeGroup[] groups; IRegion range; GroupCategory groupCategory; public TextEditBasedChangeInput(Change change) { super(change); } } // // private static class ComparePreviewer extends CompareViewerSwitchingPane { // private CompareConfiguration fCompareConfiguration; // private String fLabel; // private ImageDescriptor fDescriptor; // private Image fImage; // // public ComparePreviewer(Composite parent) { // super(parent, SWT.BORDER | SWT.FLAT, true); // fCompareConfiguration = new CompareConfiguration(); // fCompareConfiguration.setLeftEditable(false); // fCompareConfiguration.setLeftLabel(RefactoringUIMessages.ComparePreviewer_original_source); // fCompareConfiguration.setRightEditable(false); // fCompareConfiguration.setRightLabel(RefactoringUIMessages.ComparePreviewer_refactored_source); // addDisposeListener(new DisposeListener() { // public void widgetDisposed(DisposeEvent e) { // if (fImage != null && !fImage.isDisposed()) // fImage.dispose(); // } // }); // Dialog.applyDialogFont(this); // } // // public void setLabel(String label) { // fLabel = label; // } // // public void setImageDescriptor(ImageDescriptor imageDescriptor) { // fDescriptor = imageDescriptor; // } // // protected Viewer getViewer(Viewer oldViewer, Object input) { // return CompareUI.findContentViewer(oldViewer, (ICompareInput)input, this, fCompareConfiguration); // } // // public void setText(String text) { // if (fLabel != null) { // super.setText(fLabel); // } else { // super.setText(text); // } // Image current = null; // if (fDescriptor != null) { // current = fImage; // fImage = fDescriptor.createImage(); // } else { // current = fImage; // fImage = null; // } // setImage(fImage); // if (current != null) { // current.dispose(); // } // } // } // // private static class CompareElement implements ITypedElement, IEncodedStreamContentAccessor, IResourceProvider { // // we use an encoding that preserves Unicode across the stream // private static final String ENCODING = "UTF-8"; //$NON-NLS-1$ // private String fContent; // private String fType; // private IResource fResource; // // public CompareElement(String content, String type, IResource resource) { // fContent = content; // fType = type; // fResource = resource; // } // // public String getName() { // return RefactoringUIMessages.ComparePreviewer_element_name; // } // // public Image getImage() { // return null; // } // // public String getType() { // return fType; // } // // public InputStream getContents() throws CoreException { // try { // return new ByteArrayInputStream(fContent.getBytes(ENCODING)); // } catch (UnsupportedEncodingException e) { // return new ByteArrayInputStream(fContent.getBytes()); // } // } // // public String getCharset() { // return ENCODING; // } // // public IResource getResource() { // return fResource; // } // } public static ChangePreviewViewerInput createInput(TextEditBasedChange change) { return new ChangePreviewViewerInput(change); } public static ChangePreviewViewerInput createInput(Change change, TextEditBasedChangeGroup group, int surroundingLines) { TextEditBasedChangeInput input = new TextEditBasedChangeInput(change); input.group = group; input.surroundingLines = surroundingLines; return input; } public static ChangePreviewViewerInput createInput(Change change, TextEditBasedChangeGroup[] groups, IRegion range) { TextEditBasedChangeInput input = new TextEditBasedChangeInput(change); input.groups = groups; input.range = range; return input; } // public void createControl(Composite parent) { // fViewer = new ComparePreviewer(parent); // } // // public Control getControl() { // return fViewer; // } public ChangePreview setInput(ChangePreviewViewerInput input) { try { Change change = input.getChange(); if (input instanceof TextEditBasedChangeInput) { TextEditBasedChangeInput extended = (TextEditBasedChangeInput)input; if (extended.group != null && extended.surroundingLines >= 0) { TextEditBasedChangeGroup group = extended.group; TextEditBasedChange editChange = group.getTextEditChange(); // setInput(editChange, editChange.getCurrentContent(group.getRegion(), true, 2, new NullProgressMonitor()), // editChange.getPreviewContent(new TextEditBasedChangeGroup[]{group}, group.getRegion(), true, 2, // new NullProgressMonitor()), // editChange.getTextType()); ChangePreview preview = DtoFactory.newDto(ChangePreview.class); preview.setFileName(getFileName(editChange)); preview.setOldContent(editChange.getCurrentContent(group.getRegion(), true, 2, new NullProgressMonitor())); preview.setNewContent(editChange.getPreviewContent(new TextEditBasedChangeGroup[]{group}, group.getRegion(), true, 2, new NullProgressMonitor())); return preview; } else if (extended.groups != null && extended.groups.length > 0 && extended.range != null) { TextEditBasedChange editChange = extended.groups[0].getTextEditChange(); TextEditBasedChangeGroup[] groups = extended.groups; // if (extended.groupCategory != null) { // // } // setInput(editChange, editChange.getCurrentContent(extended.range, true, 0, new NullProgressMonitor()), // editChange.getPreviewContent(groups, extended.range, true, 0, new NullProgressMonitor()), // editChange.getTextType()); ChangePreview preview = DtoFactory.newDto(ChangePreview.class); preview.setFileName(getFileName(editChange)); preview.setOldContent(editChange.getCurrentContent(extended.range, true, 0, new NullProgressMonitor())); preview.setNewContent(editChange.getPreviewContent(groups, extended.range, true, 0, new NullProgressMonitor())); return preview; } } else if (change instanceof TextEditBasedChange) { TextEditBasedChange editChange = (TextEditBasedChange)change; // setInput(editChange, editChange.getCurrentContent(new NullProgressMonitor()), // editChange.getPreviewContent(new NullProgressMonitor()), editChange.getTextType()); ChangePreview preview = DtoFactory.newDto(ChangePreview.class); preview.setFileName(getFileName(editChange)); preview.setOldContent(editChange.getCurrentContent(new NullProgressMonitor())); preview.setNewContent(editChange.getPreviewContent(new NullProgressMonitor())); return preview; } else { // fViewer.setInput(null); return null; } } catch (CoreException | AssertionFailedException e) { JavaPlugin.log(e); // fViewer.setInput(null); return null; } // } catch (AssertionFailedException e) { // RefactoringUIPlugin.log(e); // fViewer.setInput(null); // } return null; } private String getFileName(Change editChange) { Object element = editChange.getModifiedElement(); if (element instanceof IJavaElement) { return ((IJavaElement)element).getElementName(); } return element.toString(); } // public void refresh() { // fViewer.getViewer().refresh(); // } // // private void setInput(TextEditBasedChange change, String left, String right, String type) { // Object element = change.getModifiedElement(); // IResource resource = null; // if (element instanceof IAdaptable) { // IAdaptable adaptable = (IAdaptable)element; // IWorkbenchAdapter workbenchAdapter = (IWorkbenchAdapter)adaptable.getAdapter(IWorkbenchAdapter.class); // if (workbenchAdapter != null) { // fViewer.setLabel(workbenchAdapter.getLabel(element)); // fViewer.setImageDescriptor(workbenchAdapter.getImageDescriptor(element)); // } else { // fViewer.setLabel(null); // fViewer.setImageDescriptor(null); // } // resource = (IResource)adaptable.getAdapter(IResource.class); // } else { // fViewer.setLabel(null); // fViewer.setImageDescriptor(null); // } // // fViewer.setInput(new DiffNode( // new CompareElement(left, type, resource), // new CompareElement(right, type, resource))); // } }