newaddressitemwizardpage.java

来自「eclipse开发笔记」· Java 代码 · 共 159 行

JAVA
159
字号
package com.plugindev.addressbook.wizards;

import org.eclipse.jface.wizard.WizardPage;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import com.plugindev.addressbook.models.AddressCategory;
import com.plugindev.addressbook.models.AddressItem;
import com.plugindev.addressbook.models.AddressManager;
import com.plugindev.addressbook.util.ImageKeys;

public class NewAddressItemWizardPage extends WizardPage {

	private Combo combo;
	private Text text;
	private AddressCategory selectedCategory;
	private String name;
	
	/**
	 * Create the wizard
	 */
	public NewAddressItemWizardPage() {
		super("新建地址项");
		setTitle("创建地址元素");
		setDescription("创建一个新的地址元素");
		setImageDescriptor(ImageKeys.
				getImageDescriptor(ImageKeys.IMG_WIZARD_NEW));
	}

	/**
	 * Create contents of the wizard
	 * @param parent
	 */
	public void createControl(Composite parent) {
		Composite container = new Composite(parent, SWT.NULL);
		final GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 2;
		container.setLayout(gridLayout);
		//
		setControl(container);

		final Label label = new Label(container, SWT.NONE);
		label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
		label.setText("为将要添加的地址元素创建名称。");

		final Label label_1 = new Label(container, SWT.NONE);
		label_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
		label_1.setText("设定元素名称:");

		text = new Text(container, SWT.BORDER);
		final GridData gd_text = new GridData(SWT.CENTER, SWT.CENTER, true, false);
		gd_text.widthHint = 117;
		text.setLayoutData(gd_text);
		text.addModifyListener(new ModifyListener(){
			public void modifyText(ModifyEvent e) {
				Text text = (Text)e.getSource();
				name = text.getText();
				updatePageComplete();
			}
		});

		final Label label_2 = new Label(container, SWT.NONE);
		label_2.setLayoutData(new GridData());
		label_2.setText("为要添加的地址元素指定类别。");
		new Label(container, SWT.NONE);

		final Label label_3 = new Label(container, SWT.NONE);
		label_3.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
		label_3.setText("选择元素类别:");

		combo = new Combo(container, SWT.NONE);
		final GridData gd_combo = new GridData(SWT.CENTER, SWT.CENTER, false, false);
		gd_combo.widthHint = 96;
		combo.setLayoutData(gd_combo);
		combo.addSelectionListener(new SelectionListener(){
			public void widgetDefaultSelected(SelectionEvent e) {}
			public void widgetSelected(SelectionEvent e) {
				Combo combo = (Combo)e.getSource();
				String str = combo.getText();
				selectedCategory = AddressCategory.getCategoryByName(str);
				updatePageComplete();
			}
		});
		
		AddressCategory[] allCategories = AddressCategory.getTypes();
		
		for(int i = 0; i <allCategories.length; i++)
		{
			String categoryName = allCategories[i].getCategoryName();
			combo.add(categoryName);
		}
		/*
		 * 在第17章增加下面两个判断,来为cheatsheet提供支持
		 */
		if(this.name != null){
			text.setText(this.name);
			text.setEditable(false);
		}
		if(this.selectedCategory != null){
			combo.setText(this.selectedCategory.getCategoryName());
			combo.setEnabled(false);
		}
		updatePageComplete();
	}
	public AddressCategory getSelectedAddressCategory(){
		return this.selectedCategory;
	}
	public String getSelectedName(){
		return this.name;
	}
	public void updatePageComplete(){
		setPageComplete(false);
		AddressManager manager = AddressManager.getManager();
		if(name == null || name.equals("")){
			setMessage(null);
			setErrorMessage("请输入要创建的地址元素的名称");
			return;
		}
		AddressItem[] items = manager.getAddresses();
		for(int i = 0; i < items.length; i++){
			if(items[i].getName().equals(name))
			{
				setMessage(null);
				setMessage("此名称已存在,请设置另外的名称!",WARNING);
				return;
			}
		}
		if(selectedCategory == null){
			setMessage(null);
			setErrorMessage("请选择要创建的地址元素的类别");
			return;
		}
		setPageComplete(true);
		setMessage(null);
		setErrorMessage(null);
	}
	/*
	 * 在第17章增加下面两个方法,来为cheatsheet提供支持
	 */
	public void setName(String name){
		this.name = name;
		text.setText(this.name);
		text.setEditable(false);
	}
	public void setCategory(String categoryName){
		this.selectedCategory = AddressCategory.getCategoryByName(categoryName);
		combo.setText(this.selectedCategory.getCategoryName());
		combo.setEnabled(false);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?