View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: ConversionPreviewComposite.java
13   * Created: 2009-09-17
14   * Author: entrop
15   * $Id$
16   */
17  
18  package pl.edu.agh.cast.importer.wizard.page;
19  
20  import org.eclipse.jface.viewers.TableViewer;
21  import org.eclipse.jface.viewers.TableViewerColumn;
22  import org.eclipse.swt.SWT;
23  import org.eclipse.swt.layout.GridData;
24  import org.eclipse.swt.layout.GridLayout;
25  import org.eclipse.swt.widgets.Composite;
26  import org.eclipse.swt.widgets.TableColumn;
27  
28  import pl.edu.agh.cast.importer.base.data.DataRow;
29  import pl.edu.agh.cast.importer.base.data.ITabularData;
30  import pl.edu.agh.cast.importer.base.data.TabularData;
31  import pl.edu.agh.cast.importer.wizard.provider.ListColumnLabelProvider;
32  import pl.edu.agh.cast.importer.wizard.util.Messages;
33  import pl.edu.agh.cast.importer.wizard.utils.TableViewerHelper;
34  
35  /**
36   * Composite which shows conversion preview using <code>TableViewer</code>.
37   * 
38   * @author AGH CAST Team
39   */
40  public class ConversionPreviewComposite extends Composite {
41  	private TableViewer conversionPreviewViewer;
42  
43  	/**
44  	 * The default constructor.
45  	 * 
46  	 * @param parent
47  	 *            parent
48  	 * @param style
49  	 *            SWT style
50  	 */
51  	public ConversionPreviewComposite(Composite parent, int style) {
52  		super(parent, style);
53  		initGUI();
54  	}
55  
56  	private void initGUI() {
57  		GridLayout thisLayout = new GridLayout();
58  		thisLayout.makeColumnsEqualWidth = true;
59  		this.setLayout(thisLayout);
60  
61  		conversionPreviewViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL);
62  		conversionPreviewViewer.getTable().setBounds(22, 37, 60, 30);
63  		conversionPreviewViewer.getTable().setHeaderVisible(true);
64  		GridData conversionPreviewViewerLData = new GridData();
65  		conversionPreviewViewerLData.grabExcessHorizontalSpace = true;
66  		conversionPreviewViewerLData.horizontalAlignment = GridData.FILL;
67  		conversionPreviewViewerLData.verticalAlignment = GridData.FILL;
68  		conversionPreviewViewerLData.grabExcessVerticalSpace = true;
69  		conversionPreviewViewer.getControl().setLayoutData(conversionPreviewViewerLData);
70  		conversionPreviewViewer.getTable().setLinesVisible(true);
71  	}
72  
73  	/**
74  	 * Views in table viewer conversion preview.
75  	 * 
76  	 * @param data
77  	 *            conversion preview data
78  	 */
79  	public void refreshConversionPreview(ITabularData<DataRow> data) {
80  		conversionPreviewViewer.getTable().setEnabled(true);
81  		TableViewerHelper.initTable(conversionPreviewViewer, data);
82  		conversionPreviewViewer.getTable().setLinesVisible(true);
83  		conversionPreviewViewer.getTable().setHeaderVisible(true);
84  		TableViewerHelper.adjustColumnWidth(conversionPreviewViewer);
85  		conversionPreviewViewer.refresh();
86  	}
87  
88  	/**
89  	 * Shows 'load preview' text on conversion preview.
90  	 */
91  	public void showLoadingPreviewInfo() {
92  		removeDataAndSetText(Messages.ConversionPreviewComposite_LoadingPreview);
93  
94  	}
95  
96  	/**
97  	 * Shows 'preview not available' text on conversion preview.
98  	 */
99  	public void showPreviewNotAvailable() {
100 		removeDataAndSetText(Messages.ConversionPreviewComposite_PreviewNotAvailable);
101 	}
102 
103 	/**
104 	 * Shows empty preview.
105 	 */
106 	public void clearPreview() {
107 		removeDataAndSetText(""); //$NON-NLS-1$
108 	}
109 
110 	private void removeDataAndSetText(String text) {
111 		if (conversionPreviewViewer.getTable().getColumnCount() == 1
112 		        && conversionPreviewViewer.getTable().getItemCount() == 0) {
113 			conversionPreviewViewer.getTable().getColumn(0).setText(text);
114 			conversionPreviewViewer.getTable().getColumn(0).pack();
115 			return;
116 		}
117 
118 		for (TableColumn column : conversionPreviewViewer.getTable().getColumns()) {
119 			column.dispose();
120 		}
121 
122 		final TableViewerColumn viewerColumn = new TableViewerColumn(conversionPreviewViewer, SWT.NONE);
123 		final TableColumn column = viewerColumn.getColumn();
124 		column.setText(text);
125 		column.pack();
126 		viewerColumn.setLabelProvider(new ListColumnLabelProvider(0));
127 		if (conversionPreviewViewer.getContentProvider() != null) {
128 			conversionPreviewViewer.setInput(new TabularData());
129 		}
130 
131 		conversionPreviewViewer.getTable().setEnabled(false);
132 
133 	}
134 
135 }