📄 enumgeneratorenewwizardpage.java
字号:
package com.cownew.enumgenerator.wizards;import org.eclipse.core.runtime.IStatus;import org.eclipse.jdt.core.ICompilationUnit;import org.eclipse.jdt.core.IJavaElement;import org.eclipse.jdt.core.IJavaProject;import org.eclipse.jdt.core.IPackageFragment;import org.eclipse.jdt.core.JavaModelException;import org.eclipse.jdt.ui.IJavaElementSearchConstants;import org.eclipse.jdt.ui.JavaUI;import org.eclipse.jdt.ui.wizards.NewContainerWizardPage;import org.eclipse.jface.dialogs.Dialog;import org.eclipse.jface.dialogs.MessageDialog;import org.eclipse.jface.viewers.ISelection;import org.eclipse.jface.viewers.IStructuredSelection;import org.eclipse.jface.window.Window;import org.eclipse.swt.SWT;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.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.Label;import org.eclipse.swt.widgets.Text;import org.eclipse.ui.dialogs.SelectionDialog;import com.cownew.enumgenerator.Activator;public class EnumGeneratoreNewWizardPage extends NewContainerWizardPage{ private Text packageText; private Text fileText; private ISelection selection; public EnumGeneratoreNewWizardPage(ISelection selection) { super("wizardPage"); setTitle("新增枚举类"); setDescription("此向导页创建一个枚举类文件"); this.selection = selection; } public void createControl(Composite parent) { initializeDialogUnits(parent); Composite container = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); container.setLayout(layout); layout.numColumns = 3; layout.verticalSpacing = 9; Label labelSrcFolder = new Label(container, SWT.WRAP); labelSrcFolder.setText("please select the source folder to store the code"); GridData gdSrcFolder = new GridData(); gdSrcFolder.widthHint = convertWidthInCharsToPixels(60); gdSrcFolder.horizontalSpan = 3; labelSrcFolder.setLayoutData(gdSrcFolder); createContainerControls(container, 3); initContainerPage(getInitialJavaElement((IStructuredSelection)selection)); Label labelPackage = new Label(container, SWT.NULL); labelPackage.setText("包:"); packageText = new Text(container, SWT.BORDER | SWT.SINGLE); GridData gd = new GridData(GridData.FILL_HORIZONTAL); packageText.setLayoutData(gd); packageText.setEditable(false); packageText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { dialogChanged(); } }); Button button = new Button(container, SWT.PUSH); button.setText("浏览..."); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { handleBrowse(); } }); Label labelFileName = new Label(container, SWT.NULL); labelFileName.setText("文件名:"); fileText = new Text(container, SWT.BORDER | SWT.SINGLE); gd = new GridData(GridData.FILL_HORIZONTAL); fileText.setLayoutData(gd); fileText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { dialogChanged(); } }); initialize(); dialogChanged(); setControl(container); Dialog.applyDialogFont(container); } protected IStatus containerChanged() { IStatus status = super.containerChanged(); updateStatus(status); return status; } private void initialize() { if (selection != null && selection.isEmpty() == false && selection instanceof IStructuredSelection) { IStructuredSelection ssel = (IStructuredSelection) selection; if (ssel.size() > 1) return; Object obj = ssel.getFirstElement(); if (obj instanceof IPackageFragment) { IPackageFragment pckFragment = (IPackageFragment)obj; packageText.setText(pckFragment.getElementName()); } else if (obj instanceof ICompilationUnit) { ICompilationUnit cu = (ICompilationUnit) obj; // cu的父容器一定是一个包,所以直接通过cu.getParent()得到java // 文件所在的包 packageText.setText(cu.getParent().getElementName()); } } fileText.setText("*.java"); } private void handleBrowse() { IJavaProject javaProject = getCurrentJavaProject(); if(javaProject==null) { MessageDialog.openWarning(getShell(), "error", "请在Java项目内运行此向导!"); } SelectionDialog dialog = null; try { dialog = JavaUI.createPackageDialog(getShell(), javaProject,IJavaElementSearchConstants.CONSIDER_REQUIRED_PROJECTS); } catch (JavaModelException jme) { MessageDialog.openWarning(getShell(), "error", jme.getMessage()); Activator.logException(jme); } if (dialog.open() != Window.OK) { return; } IPackageFragment pck = (IPackageFragment) dialog.getResult()[0]; if (pck != null) { packageText.setText(pck.getElementName()); } } private IJavaProject getCurrentJavaProject() { if (selection != null && selection.isEmpty() == false && selection instanceof IStructuredSelection) { IStructuredSelection ssel = (IStructuredSelection) selection; Object obj = ssel.getFirstElement(); if(obj instanceof IJavaElement) { return ((IJavaElement)obj).getJavaProject(); } } return null; } private void dialogChanged() { String pckName = packageText.getText(); String fileName = fileText.getText(); if (pckName==null||pckName.length() == 0) { updateMsg("请指定包"); return; } if (fileName==null||fileName.length() == 0) { updateMsg("请输入文件名"); return; } if (fileName.replace('\\', '/').indexOf('/', 1) > 0|| fileName.contains("*")||fileName.contains("?")) { updateMsg("文件名不合法"); return; } int dotLoc = fileName.lastIndexOf('.'); if (dotLoc != -1) { String ext = fileName.substring(dotLoc + 1); if (ext.equalsIgnoreCase("java") == false) { updateMsg("文件扩展名必须是 \"java\""); return; } } updateMsg(null); } protected void updateMsg(String message) { setErrorMessage(message); setPageComplete(message==null); } public String getPackageName() { return packageText.getText(); } public String getFileName() { return fileText.getText(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -