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: DelimiterSelectionPage.java
13 * Created: 2009-03-11
14 * Author: bmilos
15 * $Id$
16 */
17
18 package pl.edu.agh.cast.importer.wizard.page;
19
20 import java.util.List;
21
22 import org.eclipse.swt.SWT;
23 import org.eclipse.swt.widgets.Composite;
24
25 import pl.edu.agh.cast.importer.base.data.RawTabularData;
26 import pl.edu.agh.cast.importer.base.tokenizer.ITokenizerOption;
27 import pl.edu.agh.cast.importer.wizard.util.Messages;
28
29 /**
30 * Page of the import wizard, which serves for selection of data column delimiters.
31 *
32 * @author AGH CAST Team
33 */
34 public class DelimiterSelectionPage extends AbstractImportWizardPage {
35
36 private DelimiterSelectionPageComposite composite;
37
38 /**
39 * The default constructor.
40 */
41 public DelimiterSelectionPage() {
42 super(Messages.ImporterWizard_DelimiterSelectionPageTitle,
43 Messages.ImporterWizard_DelimiterSelectionPageDescription);
44 }
45
46 /**
47 * {@inheritDoc}
48 *
49 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
50 */
51 public void createControl(Composite parent) {
52 composite = new DelimiterSelectionPageComposite(parent, SWT.NULL, this);
53 setControl(composite);
54
55 refreshSelectedData();
56 }
57
58 /*
59 * -----------------------------------------------------------------------------------------------------------
60 * --------------------------OVERRIDED METHODS-------------------------------------------------------
61 * -----------------------------------------------------------------------------------------------------------
62 */
63
64 /**
65 * {@inheritDoc}
66 *
67 * @see pl.edu.agh.cast.importer.wizard.page.AbstractImportWizardPage#initPage()
68 */
69 @Override
70 public void initPage() {
71 refreshSelectedData();
72 }
73
74 /**
75 * {@inheritDoc}
76 *
77 * @see pl.edu.agh.cast.importer.wizard.page.AbstractImportWizardPage#refreshImportData()
78 */
79 @Override
80 public void refreshImportData() {
81 getImportProcess().setTokenizerOptions(composite.getSelectedTokenizerOptions());
82 }
83
84 /*----------------------------------------------------------------------------------------------------------*/
85
86 /*
87 * -----------------------------------------------------------------------------------------------------------
88 * --------------------------HELPER METHODS------------------------------------------------------------
89 * -----------------------------------------------------------------------------------------------------------
90 */
91
92 protected boolean isComplete() {
93 return true;
94 }
95
96 /**
97 * Loads a data preview by importing a given amount of rows of a specified data file, with use of a tokenizer of a
98 * specified identifier and its options.
99 *
100 * <p>
101 * TODO: now the method loads a preview of only a single tabular data; future versions must include tabs for every
102 * tokenized tabular data
103 *
104 * @param options
105 * the tokenizer options
106 * @param previewRowsLimit
107 * the limit of rows previewed
108 * @return the raw tabular data ready for preview
109 */
110 RawTabularData loadPreview(List<ITokenizerOption> options, int previewRowsLimit) {
111 getImportProcess().setTokenizerOptions(options);
112 return getImportProcess().getTokenizePreview();
113 }
114
115 private void refreshSelectedData() {
116 if (composite == null) {
117 return;
118 }
119 composite.refreshFilePreviewGroupLabel(getImportProcess().getFilePath());
120 composite.refreshFilePreview();
121 }
122
123 /*----------------------------------------------------------------------------------------------------------*/
124 }