Plug-in mit OLE-Object (View) wird in RCP nicht richtig angezeigt

mo84

Grünschnabel
Hi,

ich habe ein Plug-In für eine RCP geschrieben, dass mir einfach nur eine vorhandene excel-Datei anzeigt (mit einem Arbeits- und einem Diagrammblatt). Das Ganze funktioniert soweit auch, allerdings kommt es zu Darstellungsproblemen (siehe Anhang). Sobald ich vom Arbeitsblatt zum Diagrammblatt wechsele sehe ich das Diagramm, aber halt fehlerhaft dargestellt. Sobald ich die Größe der View wechsele, oder von einer anderen view in die beschriebene View wechsele - sieht´s wieder normal aus. Wirklich seltsam das Ganze...

Verwendet habe ich Office 2000 (bei 2003, 2007 habe ich den gleichen Fehler) und Eclipse 3.5

Um den Fehler zu reproduzieren genügt es ein "Plug-in with a view" zu erstellen, mit folgender View:

Code:
package exceltest;

import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

public class View extends ViewPart {

	public static final String ID = "ExcelView";
	private OleClientSite site;

	public View() {
	}

	@Override
	public void createPartControl(Composite parent) {
		try {
			OleFrame frame = new OleFrame(parent, SWT.NONE);
			site = new OleClientSite(frame, SWT.NONE, "Excel.Sheet");
		} catch (SWTError e) {
			System.out.println("Unable to open activeX control");
			return;
		}
	}

	@Override
	public void setFocus() {
		 site.setFocus();
	}

}

dann das Ganze einfach als "Application" starten und in dem sich dann öffnenden ExcelSheet ein Arbeitsblatt + Diagrammblatt erstellen. Das Diagrammblatt erhält man, indem man unten bei den Arbeitsblättern mit der rechtenmaustaste klickt (einfügen -> Diagramm)

Ich bin wirklich über jede Hilfe dankbar, habe schon versucht einen Listener an die OleClientSite zu hängen, der beim "SheetChange" auslöst - und dann neu zeichnet, aber ohne Erfolg..

Gruß,

mo


Bilder:

falsch:
http://img243.imageshack.us/img243/9193/bugolechartsheet.jpg

richtig:
http://img88.imageshack.us/img88/3899/bugolechartsheetok.jpg
 
Zurück