Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » General (non-technical) » Polish users » Dialog porównywania plików(Tworzenie dialogu porównywania plików)
Dialog porównywania plików [message #1067341] Mon, 08 July 2013 11:11 Go to next message
Piotr Siupa is currently offline Piotr SiupaFriend
Messages: 4
Registered: October 2012
Junior Member
Witam,

Umieściłem w moim pluginie dialog, w którym porównuję ze sobą dwa pliki. Użyłem standardowego dialogu, wywoływanego przez CompareUI.openCompareDialog. Pliki i różnice między nimi wyświeltają się prawidłowo. Proszę o pomoc w rozwiązaniu dwóch problemów:
1) Nie mogę edytować treści porównywanych plików
2) Przycisk commit jest nieaktywny


Kod wywołujący dialog:
CompareConfiguration compareConfig = new CompareConfiguration();
compareConfig.setLeftLabel("Local version");
compareConfig.setRightLabel("Server version");
compareConfig.setLeftEditable(true);						compareConfig.setRightEditable(true);						compareConfig.setProperty(CompareConfiguration.IGNORE_WHITESPACE, Boolean.TRUE);

String file1 = getFile1();
String file2 = getFile2();

CompareUI.openCompareDialog(new CompareConfigEditorInput(compareConfig, file1, file2));



CompareConfigEditorInput jest klasą utworzoną przeze mnie, a jej implementacja wygląda następująco:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;

import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.compare.IEditableContent;
import org.eclipse.compare.IStreamContentAccessor;
import org.eclipse.compare.ITypedElement;
import org.eclipse.compare.structuremergeviewer.Differencer;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.swt.graphics.Image;

public class CompareConfigEditorInput extends CompareEditorInput implements IEditableContent {

	private class Input implements ITypedElement, IStreamContentAccessor {

		private String fContent;

		public Input(String s) {
			fContent = s;
		}

		public String getName() {
			return "name";
		}

		public Image getImage() {
			return null;
		}

		public String getType() {
			return "xml";
		}

		public InputStream getContents() throws CoreException {
			return new ByteArrayInputStream(fContent.getBytes());
		}

	}
	
	
	private String left, right;
	
	public CompareConfigEditorInput(CompareConfiguration configuration, String leftContent, String rightContent) {
		super(configuration);
		
		left = leftContent;
		right = rightContent;
	}
	
	protected Object prepareInput(IProgressMonitor monitor)
			throws InvocationTargetException, InterruptedException {
		Differencer diferencer = new Differencer();
		
		Object diff = diferencer.findDifferences(false, new NullProgressMonitor(), null, null,
				new Input(left), new Input(right));
		return diff;
	}
	

	public boolean isEditable() {
		return true;
	}
	
	public void setContent(byte[] newContent) {
		
	}
	
	public ITypedElement replace(ITypedElement dest, ITypedElement src) {
		return dest;
	}

	public void save(IProgressMonitor pm) {
		super.save(pm);
	}

	public void saveChanges(IProgressMonitor pm)
			throws CoreException{
		super.saveChanges(pm);
	}

}

Implementacje metod interfejsu IEditableContent są błedne, ale za pomocą debugera przekonałem się, że w ogóle nie są wywoływane.
Re: Dialog porównywania plików [message #1067859 is a reply to message #1067341] Wed, 10 July 2013 22:43 Go to previous message
Tomasz Zarna is currently offline Tomasz ZarnaFriend
Messages: 172
Registered: July 2009
Senior Member
Z tego co kojarzę, porównywanie w dialogu nie jest zalecanym podejściem do tematu. Prefereowane jest wyświetlanie porównania w edytorze. Więcej na ten temat znajdziesz tutaj.

T
Previous Topic:Debugowanie programu winapi
Next Topic:Ciekawy i długoterminowy projekt_Poszukiwany Programista oraz Analityk
Goto Forum:
  


Current Time: Fri Apr 26 18:31:53 GMT 2024

Powered by FUDForum. Page generated in 0.03037 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top