|
Posted on 2008-02-19 21:30 Raul Gong 阅读(1087) 评论(0) 编辑 收藏 所属分类: eclipse 、 java
当需要在eclipse 中自己的editor中加入右键菜单的时候,可以参考下面的代码:
package com.gongxun.tool.kaudit.ui.reports;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;

import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.PdfWriter;
import com.gongxun.tool.kaudit.core.HTMLCreate;
import com.gongxun.tool.kaudit.core.xmlparser.ProjectDistrData;
import com.gongxun.tool.kaudit.ui.graphic.Pie;
import com.gongxun.tool.kaudit.ui.graphic.RepGraphic;



 public class CopyOfReportEditor extends EditorPart implements ISelectionProvider {

public static String id = "com.gongxun.tool.kaudit.ui.reports.reporteditor";

// private Image file = null;

//private Pie pie = null;
private Image file = null;
private ProjectDistrData pdd = null;
private RepGraphic grap= null;
private IEditorInput input;

 public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub

}

 public void doSaveAs() {
// TODO Auto-generated method stub

}

public void init(IEditorSite site, IEditorInput input)
 throws PartInitException {
setSite(site);
setInput(input);
// this.file = ((ImageInput)input).getFile();
//this.pie = ((PieInput) input).getPie();
this.pdd = ((ReportInput) input).getPdd();
this.grap = ((ReportInput)input).getGrap();
this.input = input;
}

 public boolean isDirty() {
// TODO Auto-generated method stub
return false;
}

 public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}

 Action actionImage = new Action("Export as image") {
@Override
 public void run() {
// ImageDescriptor des = new

InputDialog diaImage = new InputDialog(Display.getCurrent()
.getActiveShell(), "保存路径", "请输入图片保存路径以及文件名。",
"c:\\Report.jpg", null);
 if (diaImage.open() == InputDialog.OK) {
 try {
FileOutputStream wf = new FileOutputStream(diaImage
.getValue());
ImageLoader imageLoader = new ImageLoader();
 imageLoader.data = new ImageData[] { file.getImageData() };
imageLoader.save(wf, SWT.IMAGE_JPEG);
wf.flush();
wf.close();
 } catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
};

 Action actionPdf = new Action("Export as pdf") {
@Override
 public void run() {
// TODO Auto-generated method stub

Document document = new Document(PageSize.A4, 50, 50, 50, 50);

InputDialog diaPDF = new InputDialog(Display.getCurrent()
.getActiveShell(), "保存路径", "请输入PDF保存路径以及文件名。",
"c:\\Report.pdf", null);
 if (diaPDF.open() == InputDialog.OK) {
 try {
// 首先保存图片
FileOutputStream wf = new FileOutputStream("c:\\temp.jpg");
ImageLoader imageLoader = new ImageLoader();
 imageLoader.data = new ImageData[] { file.getImageData() };
imageLoader.save(wf, SWT.IMAGE_JPEG);
wf.flush();
wf.close();
// 然后保存pdf
FileOutputStream osPDF = new FileOutputStream(diaPDF
.getValue());
PdfWriter writer = PdfWriter.getInstance(document, osPDF);
document.open();
// document.add(new Paragraph("First page of the
// document."));
// document
// .add(new Paragraph(
// "Some more text on the first page with different color
// and font type.",
// FontFactory.getFont(FontFactory.COURIER, 14,
// Font.BOLD, new Color(255, 150, 200))));
com.lowagie.text.Image itextima = com.lowagie.text.Image
.getInstance("c:\\temp.jpg");
itextima.scalePercent(60);
document.add(itextima);
document.close();
osPDF.flush();
osPDF.close();
// 然后删除图片
File tmpImg = new File("c:\\temp.jpg");
tmpImg.delete();
writer.close();
System.out.println();
 } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
};

 Action actionHtml = new Action("Export as html") {
@Override
 public void run() {
// TODO Auto-generated method stub

HTMLCreate htmlCreate = new HTMLCreate();
 try {
htmlCreate.createHTML();
 } catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};

 public void createPartControl(Composite parent) {

Composite comp = new Composite(parent, SWT.NONE);
GridLayout gl = new GridLayout();
gl.numColumns = 3;
comp.setLayout(gl);
new Button(comp,SWT.NONE).setText("导出Html");
new Button(comp,SWT.NONE).setText("导出Image");
new Button(comp,SWT.NONE).setText("导出PDF");
createMyPartControl(comp);
}


 public void createMyPartControl(Composite parent) {

//new PartCanvas(parent,input);
Canvas canvas = new Canvas(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_HORIZONTAL|GridData.FILL_VERTICAL);
gd.horizontalSpan = 3;
canvas.setLayoutData(gd);

 canvas.addPaintListener(new PaintListener() {

 public void paintControl(PaintEvent e) {
Canvas canvas = (Canvas) e.getSource();
Rectangle re = canvas.getClientArea();
final Rectangle adjustedRe = new Rectangle(0, 0, re.width,
re.height);
file = new Image(Display.getCurrent(), adjustedRe);
grap.update(file, adjustedRe,pdd);
e.gc.drawImage(file, 0, 0);

}

});

 canvas.addControlListener(new ControlListener() {

 public void controlMoved(ControlEvent e) {

}

 public void controlResized(ControlEvent e) {

}

});

MenuManager manager = new MenuManager("#PopupMenu");
manager.add(actionImage);
manager.add(actionPdf);
manager.add(actionHtml);
Menu menu = manager.createContextMenu(canvas);
canvas.setMenu(menu);
this.getEditorSite().registerContextMenu(manager, this);
}
 public void setFocus() {
// TODO Auto-generated method stub

}

@Override
 public void addSelectionChangedListener(ISelectionChangedListener listener) {
// TODO Auto-generated method stub

}

@Override
 public ISelection getSelection() {
// TODO Auto-generated method stub
return null;
}

@Override
public void removeSelectionChangedListener(
 ISelectionChangedListener listener) {
// TODO Auto-generated method stub

}

@Override
 public void setSelection(ISelection selection) {
// TODO Auto-generated method stub

}

}

|