/******************************************************************************* * Copyright (c) 2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.configuration.editors.edireader12; import java.util.List; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.jboss.tools.smooks.configuration.editors.ClassPathFileProcessor; import org.jboss.tools.smooks.configuration.editors.edireader12.Messages; import org.jboss.tools.smooks.configuration.editors.xml.AbstractFileSelectionWizardPage; import org.jboss.tools.smooks.model.smooks.SmooksResourceListType; /** * @author Dart (dpeng@redhat.com) * */ public class EDIMappingDataPathWizardPage extends AbstractFileSelectionWizardPage { private boolean hasReader = false; private boolean createNewReader = true; private String mappingFile = null; private Composite fileComposite = null; private String encoding = "UTF-8"; //$NON-NLS-1$ private Button createNewReaderButton; private boolean useAvaliableReader = false; private SmooksResourceListType resourceList; public EDIMappingDataPathWizardPage(String pageName, boolean multiSelect, Object[] initSelections, List<ViewerFilter> filters) { super(pageName, multiSelect, initSelections, filters); this.setTitle(Messages.EDIMappingDataPathWizardPage_EDI_Wizard_Title); this.setDescription(Messages.EDIMappingDataPathWizardPage_EDI_Wizard_Description); this.setFilePathProcessor(new ClassPathFileProcessor()); } public EDIMappingDataPathWizardPage(String pageName, String[] fileExtensionNames) { super(pageName, fileExtensionNames); this.setTitle(Messages.EDIMappingDataPathWizardPage_EDI_Wizard_Title); this.setDescription(Messages.EDIMappingDataPathWizardPage_EDI_Wizard_Description); this.setFilePathProcessor(new ClassPathFileProcessor()); } public String getEncoding() { return encoding; } public boolean isUseAvaliableReader() { return useAvaliableReader; } public SmooksResourceListType getSmooksResourceList() { return resourceList; } public void setSmooksResourceList(SmooksResourceListType resourceList) { this.resourceList = resourceList; } private void initData() { encoding = "UTF-8"; //$NON-NLS-1$ hasReader = false; useAvaliableReader = false; createNewReader = true; // if (SmooksUIUtils.hasReaderAlready(EDIReader.class, resourceList) // || SmooksUIUtils.hasReaderAlready(EDIReaderImpl.class, resourceList)) { // hasReader = true; // } mappingFile = null; if (hasReader) { useAvaliableReader = true; createNewReader = false; } } public boolean isHasReader() { return hasReader; } public boolean isCreateNewReader() { return createNewReader; } @Override public void createControl(Composite parent) { initData(); super.createControl(parent); } public String getMappingFile() { return mappingFile; } @Override protected void createExtensionGUIFirst(Composite parent) { Label encodingLabel = new Label(parent, SWT.NONE); encodingLabel.setText(Messages.EDIMappingDataPathWizardPage_Label_Encoding); final Text encodingText = new Text(parent, SWT.BORDER); encodingText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { mappingFile = encodingText.getText(); } }); GridData gd = new GridData(GridData.FILL_HORIZONTAL); encodingText.setLayoutData(gd); } @Override protected Composite createFileSelectionComposite(Composite parent) { Composite chooseComposite = new Composite(parent, SWT.NONE); GridData gd = new GridData(GridData.FILL_HORIZONTAL); chooseComposite.setLayoutData(gd); GridLayout gl = new GridLayout(); gl.numColumns = 2; chooseComposite.setLayout(gl); Button newReaderButton = new Button(chooseComposite, SWT.RADIO); newReaderButton.setText(Messages.EDIMappingDataPathWizardPage_Button_Create_Readers); final Button useReaderButton = new Button(chooseComposite, SWT.RADIO); useReaderButton.setText(Messages.EDIMappingDataPathWizardPage_Button_Use_Existing_Reader); fileComposite = super.createFileSelectionComposite(parent); createNewReaderButton = new Button(fileComposite, SWT.CHECK); createNewReaderButton.setText(Messages.EDIMappingDataPathWizardPage_Button_Create_New_Reader); createNewReaderButton.setSelection(true); if (hasReader) { createNewReaderButton.setSelection(false); createNewReaderButton.setEnabled(false); useReaderButton.setSelection(true); this.setConfigCompositeStates(false); } else { newReaderButton.setSelection(true); createNewReaderButton.setSelection(true); } createNewReaderButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { createNewReader = createNewReaderButton.getSelection(); } public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); newReaderButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { useAvaliableReader = useReaderButton.getSelection(); setConfigCompositeStates(true); changeWizardPageStatus(); } public void widgetDefaultSelected(SelectionEvent e) { } }); useReaderButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { useAvaliableReader = useReaderButton.getSelection(); setConfigCompositeStates(false); changeWizardPageStatus(); } public void widgetDefaultSelected(SelectionEvent e) { } }); gd = new GridData(); gd.horizontalSpan = 2; createNewReaderButton.setLayoutData(gd); return fileComposite; } private void setConfigCompositeStates(boolean enabled) { fileComposite.setEnabled(enabled); Control[] controls = fileComposite.getChildren(); for (int i = 0; i < controls.length; i++) { Control c = controls[i]; if (c == createNewReaderButton) { if (hasReader) { c.setEnabled(false); continue; } } if (c == fileTextComposite) { Control[] cs = ((Composite) c).getChildren(); for (int j = 0; j < cs.length; j++) { Control cc = cs[j]; cc.setEnabled(enabled); } } c.setEnabled(enabled); } } /* * (non-Javadoc) * * @seeorg.jboss.tools.smooks.configuration.editors.xml. * AbstractFileSelectionWizardPage#loadedTheObject(java.lang.String) */ @Override protected Object loadedTheObject(String path) throws Exception { return null; } @Override protected void changeWizardPageStatus() { if (!useAvaliableReader) { super.changeWizardPageStatus(); } else { setErrorMessage(null); setPageComplete(true); } } @Override public boolean canFlipToNextPage() { return super.canFlipToNextPage(); // String filePath = this.getFilePath(); // try { // filePath = SmooksUIUtils.parseFilePath(filePath); // if(filePath == null) return false; // return new File(filePath).exists(); // } catch (InvocationTargetException e) { // return false; // } } }