如何在eclipse e4中保存/恢复视图

时间:2014-06-01 18:40:21

标签: java eclipse e4

我有两个部分。在左边部分,我使用checkbox tableviewer来显示文件名列表。右边部分用于显示图表(我正在使用JFreechart)。我有一个处理程序,用于动态添加选项卡到右侧部分。如果我在第一个选项卡中并在左侧tableviewer中选择了一些复选框,则图表将显示在右侧。当我创建一个新选项卡(右侧)时,左侧tableviewer应该重置。

当我再次选择第一个标签时,我想在左侧部分看到上一个选项。任何人都可以根据标签更改提供一些保存/恢复视图的建议吗?

文件查看器的左侧部分代码:

@PostConstruct
public void createComposite(Composite parent) {
    parent.setLayout(new GridLayout(1, false));
    tableViewer = new CheckboxTableViewer(parent, SWT.BORDER);
    tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));

}

public void setTableInput(File[] selectedFiles) {
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    tableViewer.setLabelProvider(new FileLabelProvider());
    prevSelectedFiles = selectedFiles;
    tableViewer.setInput(selectedFiles);
    tableViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            filesSelected = tableViewer.getCheckedElements();
// some code to display graph
}}}

右侧代码(图表)

@PostConstruct
public void postConstruct(final Composite parent) {
    final JFreeChart chart = createChart(dataset, title);
    new ChartComposite(parent, SWT.NONE, chart, true);

}

private JFreeChart createChart(TimeSeriesCollection dataset, String string) {
    final JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "REPORT GENERATION", "TimeStamp", "ms", dataset, true, true,
            false);
    chart.setBackgroundPaint(Color.WHITE);

    final XYPlot plot = (XYPlot) chart.getPlot();
    plot.setDataset(0, dataset);
    plot.setBackgroundPaint(Color.WHITE);
    plot.setDomainGridlinePaint(Color.BLACK);
    plot.setRangeGridlinePaint(Color.BLACK);
    Shape shape = new Ellipse2D.Double(-2.0, -2.0, 4.0, 4.0);

    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot
            .getRenderer();
    renderer.setSeriesShape(0, shape);
    renderer.setSeriesShape(1, shape);
    renderer.setSeriesShape(2, shape);
    renderer.setBaseShapesVisible(true);
    renderer.setSeriesOutlinePaint(0, Color.GRAY);
    renderer.setSeriesOutlinePaint(1, Color.GRAY);
    renderer.setSeriesOutlinePaint(2, Color.GRAY);
    renderer.setUseFillPaint(true);
    renderer.setSeriesFillPaint(0, Color.red);
    renderer.setSeriesFillPaint(1, Color.green);
    renderer.setSeriesFillPaint(2, Color.blue);
    renderer.setSeriesPaint(0, Color.red);
    renderer.setSeriesPaint(1, Color.green);
    renderer.setSeriesPaint(2, Color.blue);

    NumberAxis yaxis = (NumberAxis) plot.getRangeAxis();
    yaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    yaxis.setAutoRangeIncludesZero(false);
    plot.setRangeAxis(yaxis);
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setAutoTickUnitSelection(true);
    // axis.setTickUnit(new DateTickUnit(DateTickUnitType.SECOND,120));
    axis.setDateFormatOverride(new SimpleDateFormat("HH:mm:ss"));
    // DateAxis.createStandardDateTickUnits();
    axis.setTickMarksVisible(true);
    axis.setTickLabelsVisible(true);
    return chart;

}
public void setValue(ArrayList<TreeMap<Timestamp, Long>> statisticalValues, String protocolName, String statistics) {
    // //System.out
    // .println("setting the value for timeseries-->" + i);

    TimeSeries ts = null;
    for (TreeMap<Timestamp, Long> entries : statisticalValues) {

        ts = new TimeSeries(protocolName + "_" + statistics,
                Second.class);
        for (Entry<Timestamp, Long> seriesData : entries.entrySet()) {
            ts.addOrUpdate(new Second(seriesData.getKey()),
                    seriesData.getValue());
        }
    }
    dataset.addSeries(ts);

}

负责动态创建标签的处理程序(Grapgh部分):

public class DynamicPartsHandler {
@Execute
public void execute(EPartService partService, EModelService modelService,
        MApplication application,Shell shell) {
    String partName = "Graph";
    MPart part = partService
            .createPart("com.wincor.commtrace.project.partDescriptor.1");
    MPartStack stack = (MPartStack) modelService.find(
            "com.wincor.commtrace.project.partstack.2", application);
    stack.getChildren().add(part);

    part.setLabel(partName);
    part.setVisible(true);
    part.setCloseable(true);
    partService.showPart(part, PartState.ACTIVATE);
}
}

提前致谢

0 个答案:

没有答案