package net.ms.designer.ui.wizard; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Observable; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import net.ms.designer.core.DBTool; import net.ms.designer.ui.preference.DBPreferencePage; import org.eclipse.core.internal.resources.WorkspaceRoot; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogPage; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.internal.UIPlugin; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; //import net.ms.designer.ui.preference.DBPreferencePage; //import net.ms.designer.ui.preference.DBPreferencePage;; //let's begin public class NewAppWizard extends WizardPage { private Composite composite; Text authorText, versionText,companyText,pathText,txtProject; Button initButton; static Combo cbConn; boolean needInitDB ; boolean defaultV = false; int flag = 0; Button btnConfig; Text genPackageNameText; static List dbList ; String path; public NewAppWizard() { super("Platform Project Wizard"); setTitle("Platform Project Wizard"); setDescription("Platform Project Wizard"); setPageComplete(false); // IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); } public void createControl(Composite parent) { initializeDialogUnits(parent); composite = createClientArea(parent); createProject(composite); createAppInfoGroup(composite); createProjInfoGroup(composite); createConfigGroup(composite); setControl(composite); Dialog.applyDialogFont(composite); } private Composite createClientArea(Composite composite) { Composite composite1 = new Composite(composite, SWT.NONE); GridLayout gridlayout = new GridLayout(); gridlayout.marginWidth = 0; gridlayout.marginHeight = 0; gridlayout.numColumns = 1; composite1.setLayout(gridlayout); // composite1.setLayout(new RowLayout()); return composite1; } private void createProject(Composite parent) { Font font = parent.getFont(); Label companyLabel = new Label(parent, SWT.NONE | SWT.TRAIL); companyLabel.setFont(font); companyLabel.setText("��Ŀ����"); //$NON-NLS-1$ // //System.out.println("aaaaaaaaaaaaaaa"); txtProject = new Text(parent, SWT.BORDER); GridData gd3 = new GridData(GridData.FILL_HORIZONTAL); // gd3.widthHint = 120; txtProject.setLayoutData(gd3); txtProject.setFont(font); txtProject.setText(""); txtProject.setFocus(); txtProject.addModifyListener(new ModifyListener(){ public void modifyText(ModifyEvent e) { // TODO Auto-generated method stub if(txtProject.getText().length()>0){ setPageComplete(true); } else setPageComplete(false); genPackageNameText.setText("com."+ companyText.getText()+"."+txtProject.getText() ); pathText.setText(path+"\\"+txtProject.getText()); } }); } private void createAppInfoGroup(Composite parent) { Font font = parent.getFont(); Group group = new Group(parent, SWT.NONE); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridLayout gl = new GridLayout(); gl.numColumns = 3; group.setLayout(gl); group.setFont(font); group.setText("��Ŀ����"); //$NON-NLS-1$ initButton = new Button(group, SWT.CHECK); initButton.setText("ʹ��ȱʡֵ��D��"); //$NON-NLS-1$ setCustomButtonLayoutData(initButton, 3); initButton.setSelection(true); initButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { // defaultV = initButton.getSelection(); if(initButton.getSelection() == true){ pathText.setText(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()); pathText.setEnabled(false); btnConfig.setEnabled(false); path = ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString(); } else{ pathText.setText(""); pathText.setEnabled(true); btnConfig.setEnabled(true); } // //System.out.println("initButton.getSelection()"+initButton.getSelection()); // //System.out.println("defaultV"+defaultV); } public void widgetDefaultSelected(SelectionEvent e) { } }); //path Label companyLabel = new Label(group, SWT.NONE | SWT.TRAIL); companyLabel.setFont(font); companyLabel.setText("Ŀ¼"); //$NON-NLS-1$ pathText = new Text(group, SWT.BORDER); GridData gd3 = new GridData(GridData.FILL_HORIZONTAL); // gd3.widthHint = 120; pathText.setLayoutData(gd3); pathText.setFont(font); pathText.setEnabled(false); pathText.setText(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()); path = pathText.getText(); // if(defaultV==true){ //// pathText.setText(""); //$NON-NLS-1$ // } // else{ // pathText.setText(""); // } // GridData gd = new GridData(GridData.FILL_HORIZONTAL); // gd.widthHint = 120; // pathText.setLayoutData(gd); // pathText.setFont(font); // btnConfig = new Button(group, SWT.PUSH); btnConfig.setText("���"); //$NON-NLS-1$ btnConfig.setEnabled(false); btnConfig.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { DirectoryDialog dd = new DirectoryDialog(new Shell()); dd.open(); pathText.setText(dd.getFilterPath()+"\\"+txtProject.getText()); path = dd.getFilterPath(); } public void widgetDefaultSelected(SelectionEvent e) { } }); setCustomButtonLayoutData(btnConfig, 1); } private void createProjInfoGroup(Composite parent) { Font font = parent.getFont(); Group group = new Group(parent, SWT.NONE); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridLayout gl = new GridLayout(); gl.numColumns = 2; group.setLayout(gl); group.setFont(font); group.setText("MS Application"); //$NON-NLS-1$ //company Label companyLabel = new Label(group, SWT.NONE | SWT.TRAIL); companyLabel.setFont(font); companyLabel.setText("��˾���"); //$NON-NLS-1$ companyText = new Text(group, SWT.BORDER); GridData gd3 = new GridData(GridData.FILL_HORIZONTAL); // gd3.widthHint = 120; companyText.setLayoutData(gd3); companyText.setFont(font); companyText.setText("basuyi"); // companyText.setTextLimit(4); companyText.addModifyListener(new ModifyListener(){ public void modifyText(ModifyEvent e) { // TODO Auto-generated method stub genPackageNameText.setText("com."+ companyText.getText()+"."+txtProject.getText() ); } }); // Author Label authorLabel = new Label(group, SWT.NONE | SWT.TRAIL); authorLabel.setFont(font); authorLabel.setText("����"); //$NON-NLS-1$ authorText = new Text(group, SWT.BORDER); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.widthHint = 120; authorText.setLayoutData(gd); authorText.setFont(font); authorText.setText(System.getProperty("user.name")); //$NON-NLS-1$ // Version Label versionLabel = new Label(group, SWT.NONE | SWT.TRAIL); versionLabel.setFont(font); versionLabel.setText("�汾"); //$NON-NLS-1$ versionText = new Text(group, SWT.BORDER); GridData gd2 = new GridData(GridData.FILL_HORIZONTAL); gd.widthHint = 120; versionText.setLayoutData(gd2); versionText.setFont(font); versionText.setText("1.0"); //$NON-NLS-1$ // GenPackageName Label genPackageNameLabel = new Label(group, SWT.NONE | SWT.TRAIL); genPackageNameLabel.setFont(font); genPackageNameLabel.setText("���ɰ�·��"); //$NON-NLS-1$ genPackageNameText = new Text(group, SWT.BORDER); genPackageNameText.setLayoutData(gd); genPackageNameText.setFont(font); genPackageNameText.setText("com."+ companyText.getText()+"."+txtProject.getText() ); // genPackageNameText.addModifyListener(new ModifyListener(){ // // public void modifyText(ModifyEvent e) { // // TODO Auto-generated method stub // // } // // // }); } private void createConfigGroup(Composite parent) { Font font = parent.getFont(); Group group = new Group(parent, SWT.NONE); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridLayout gl = new GridLayout(); gl.numColumns = 3; group.setLayout(gl); group.setFont(font); group .setText("���ݿ�����"); //$NON-NLS-1$ Label connLabel = new Label(group, SWT.NONE | SWT.TRAIL); connLabel.setFont(font); connLabel.setText("���ݿ�����"); //$NON-NLS-1$ cbConn = new Combo(group, SWT.DOWN | SWT.READ_ONLY); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.widthHint = 120; cbConn.setLayoutData(gd); cbConn.setFont(font); // dbList = DBPreferencePage.dbToolList; //-------------lili //��ȡDataSourceXML�е��������� String dataSource; File file = new File("D:\\runtime-workspace\\DataSourceXML.xml"); if(file.exists()){ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.err.println(pce); System.exit(1); } Document doc = null; try { try { doc = db.parse(file); } catch (SAXException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } catch (DOMException dom) { System.err.println(dom.getMessage()); System.exit(1); } catch (IOException ioe) { System.err.println(ioe); System.exit(1); } dbList = new ArrayList(); Element root = doc.getDocumentElement(); NodeList dataSources = root.getElementsByTagName("DataSource"); if(dataSources.getLength() > 0) { for(int i = 0; i < dataSources.getLength(); i++) { DBTool dbTool2 = new DBTool(); Element data = (Element)dataSources.item(i); NodeList one = data.getElementsByTagName("conName"); Element contant = (Element)one.item(0); org.w3c.dom.Text t1 = (org.w3c.dom.Text) contant.getFirstChild(); dbTool2.setConName(t1.getNodeValue()); NodeList two = data.getElementsByTagName("dataBase"); Element contant2 = (Element)two.item(0); org.w3c.dom.Text t2 = (org.w3c.dom.Text) contant2.getFirstChild(); dbTool2.setDbName(t2.getNodeValue()); NodeList three = data.getElementsByTagName("dbType"); Element contant3 = (Element)three.item(0); org.w3c.dom.Text t3 = (org.w3c.dom.Text) contant3.getFirstChild(); dbTool2.setDbType(t3.getNodeValue()); NodeList fore = data.getElementsByTagName("password"); Element contant4 = (Element)fore.item(0); org.w3c.dom.Text t4 = (org.w3c.dom.Text) contant4.getFirstChild(); dbTool2.setPassword(t4.getNodeValue()); NodeList five = data.getElementsByTagName("port"); Element contant5 = (Element)five.item(0); org.w3c.dom.Text t5 = (org.w3c.dom.Text) contant5.getFirstChild(); dbTool2.setPort(t5.getNodeValue()); NodeList six = data.getElementsByTagName("server"); Element contant6 = (Element)six.item(0); org.w3c.dom.Text t6 = (org.w3c.dom.Text) contant6.getFirstChild(); dbTool2.setServer(t6.getNodeValue()); NodeList seven = data.getElementsByTagName("userName"); Element contant7 = (Element)seven.item(0); org.w3c.dom.Text t7 = (org.w3c.dom.Text) contant7.getFirstChild(); dbTool2.setUsername(t7.getNodeValue()); dbList.add(dbTool2); } } } //----------- // if(DBPreferencePage.dbToolList ==null ||DBPreferencePage.dbToolList.size()>0 ||dbList != null || dbList.size()>0){ // // } if(dbList != null && dbList.size() > 0 ) { Iterator it = dbList.iterator(); List dbNameList = new ArrayList(); while(it.hasNext()){ DBTool tool = (DBTool) it.next(); dbNameList.add(tool.getConName()); } cbConn.setItems((String[]) dbNameList.toArray(new String[dbNameList.size()])); if (cbConn.getItemCount() > 0) { cbConn.select(-1); } DBPreferencePage.dbToolList = dbList; } if(DBPreferencePage.dbToolList !=null && DBPreferencePage.dbToolList.size()>0){ dbList = DBPreferencePage.dbToolList; // if(dbList != null && dbList.size() > 0) // { Iterator it = dbList.iterator(); List dbNameList = new ArrayList(); while(it.hasNext()){ DBTool tool = (DBTool) it.next(); dbNameList.add(tool.getConName()); } cbConn.setItems((String[]) dbNameList.toArray(new String[dbNameList.size()])); if (cbConn.getItemCount() > 0) { cbConn.select(-1); } } // cbConn.addSelectionListener(new SelectionListener() { // public void widgetSelected(SelectionEvent e) { // setPageComplete(validatePage()); // } // // public void widgetDefaultSelected(SelectionEvent e) { // // TODO Auto-generated method stub // // } // }); Button btnConfig = new Button(group, SWT.PUSH); btnConfig.setText("����"); //$NON-NLS-1$ setCustomButtonLayoutData(btnConfig, 1); btnConfig.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if(txtProject.getText()==null||txtProject.getText().length()<1){ MessageDialog.openInformation( UIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(), "����������Ŀ����", "����������Ŀ����"); }else{ DBPreferencePage.projectName = txtProject.getText(); DBPreferencePage.dbToolList = dbList; DBPreferencePage.Show(); } // java.util.List names = DBConfigTools.getConnectionNames(); // cbConn.setItems((String[]) names.toArray(new String[names // .size()])); // if (conn.trim().equals("")) //$NON-NLS-1$ // cbConn.select(0); // else // cbConn.setText(conn); // setPageComplete(validatePage()); } }); final Button initButton = new Button(group, SWT.CHECK); initButton.setText("��ʼ��"); //$NON-NLS-1$ setCustomButtonLayoutData(initButton, 3); initButton.setSelection(needInitDB); initButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { needInitDB = initButton.getSelection(); } public void widgetDefaultSelected(SelectionEvent e) { } }); } public static void refresh(){ if(DBPreferencePage.dbToolList !=null && DBPreferencePage.dbToolList.size()>0){ dbList = DBPreferencePage.dbToolList;; Iterator it = dbList.iterator(); List dbNameList = new ArrayList(); while(it.hasNext()){ DBTool tool = (DBTool) it.next(); dbNameList.add(tool.getConName()); } cbConn.setItems((String[]) dbNameList.toArray(new String[dbNameList.size()])); if (cbConn.getItemCount() > 0) { cbConn.select(0); } } } protected GridData setCustomButtonLayoutData(Button button, int hSapn) { GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); data.heightHint = convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT); int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); data.horizontalSpan = hSapn; button.setLayoutData(data); return data; } }