⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jadmidletseditorpage.java

📁 eclipseme的最新版本的source,欢迎j2me程序员使用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			} catch (JavaModelException e) {
				EclipseMECorePlugin.log(IStatus.ERROR, "openDialogBox", e);
			}
			
			return value;
		}
	}
	
	/**
	 * Implementation of the table's content provider.
	 */
	private class TableContentProvider implements IStructuredContentProvider
	{
		/**
		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
		 */
		public Object[] getElements(Object inputElement) {
			return (Object[]) midlets.toArray(new Object[midlets.size()]);
		}

		/**
		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
		 */
		public void dispose() {
		}

		/**
		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
		 */
		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
		}
	}
	
	/**
	 * Implementation of the table's label provider.
	 */
	private class TableLabelProvider extends LabelProvider
		implements ITableLabelProvider 
	{
		/**
		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
		 */
		public Image getColumnImage(Object element, int columnIndex) {
			return null;
		}

		/**
		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
		 */
		public String getColumnText(Object element, int columnIndex) {
			return ((MidletDefinition) element).fields[columnIndex];
		}
	}
	
	/** The prefix of all midlet definition properties */
	public static final String MIDLET_PREFIX = "MIDlet-";
	
	// The property names currently defining midlets
	private ArrayList midlets;
	
	// The table viewer in use
	private TableViewer tableViewer;

	// Buttons
	private Button addButton;
	private Button removeButton;

    // The original midlet count as stored
    private int storedMidletCount;
    
	/**
	 * Constructor
	 */
	public JADMidletsEditorPage(JADEditor editor, String title) {
		super(editor, ID, title);
		midlets = new ArrayList();
	}

	/**
	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
	 */
	public void doSave(IProgressMonitor monitor) {
        IPreferenceStore store = getPreferenceStore();
        
        // Add the midlets to the store
        int i;
        int currentMidletCount = midlets.size();
        
        for (i = 0; i < currentMidletCount; i++) {
            MidletDefinition def = (MidletDefinition) midlets.get(i);
            store.setValue(MIDLET_PREFIX + (i + 1), def.toString());
        }
        
        for (; i < storedMidletCount; i++) {
            store.setToDefault(MIDLET_PREFIX + (i + 1));
        }
        
        storedMidletCount = currentMidletCount;
        setDirty(false);
	}

	/**
	 * @see org.eclipse.ui.forms.editor.FormPage#createFormContent(org.eclipse.ui.forms.IManagedForm)
	 */
	protected void createFormContent(IManagedForm managedForm) {
		FormToolkit toolkit = managedForm.getToolkit();

		// Set the top-level layout
		Composite parent = createSectionComposite(managedForm);
		parent.setLayoutData(new GridData(GridData.FILL_BOTH));
		parent.setLayout(new GridLayout(2, false));
		new Label(parent, SWT.NONE);
		new Label(parent, SWT.NONE);

		createTableViewer(toolkit, parent);
		createButtons(toolkit, parent);
		
		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "eclipseme.ui.help_JADMidletsEditorPage");
	}
	
	/**
	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
	 */
	public void setFocus() {
		tableViewer.getTable().setFocus();
	}

	/**
	 * @see eclipseme.ui.internal.editor.jad.AbstractJADEditorPage#getSectionTitle()
	 */
	protected String getSectionTitle() {
		return "Midlets";
	}

	/**
	 * @see eclipseme.ui.internal.editor.jad.AbstractJADEditorPage#getSectionDescription()
	 */
	protected String getSectionDescription() {
		return "Define the Midlets that make up the Midlet Suite";
	}

	/**
	 * @see eclipseme.ui.internal.editor.jad.AbstractJADEditorPage#editorInputChanged()
	 */
	void editorInputChanged() {
		updateMidletProperties();
	}

	/**
	 * @see eclipseme.ui.internal.editor.jad.AbstractJADEditorPage#isManagingProperty(java.lang.String)
	 */
	boolean isManagingProperty(String property) {
		boolean manages = property.startsWith(MIDLET_PREFIX);
		if (manages) {
			String value = property.substring(MIDLET_PREFIX.length());
			try {
				Integer.parseInt(value);
			} catch (NumberFormatException e) {
				manages = false;
			}
		}
		
		return manages;
	}

	/**
	 * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput)
	 */
	protected void setInput(IEditorInput input) {
		super.setInput(input);
		if (tableViewer != null) {
			tableViewer.setInput(input);
		}
		
        setDirty(false);
		updateMidletProperties();
	}

	/**
	 * Add a new item to the table.
	 */
	private void addItem() {
		MidletDefinition midletDefinition = new MidletDefinition("New Midlet", "", "");
		midlets.add(midletDefinition);
		tableViewer.refresh();
        setDirty(true);
	}
	
	/**
	 * Create the add and remove buttons to the composite.
	 * 
	 * @param toolkit the Eclipse Form's toolkit
	 * @param parent
	 */
	private void createButtons(FormToolkit toolkit, Composite parent) {
		Composite composite = toolkit.createComposite(parent);
		FillLayout layout = new FillLayout();
		layout.type = SWT.VERTICAL;
		composite.setLayout(layout);
		
		addButton = toolkit.createButton(
				composite, 
				getResourceString("editor.button.add"), 
				SWT.PUSH);
		addButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent se) {
				addItem();
			}
		});
		
		toolkit.createLabel(composite, "");
		
		removeButton = toolkit.createButton(
				composite, 
				getResourceString("editor.button.remove"), 
				SWT.PUSH);
		removeButton.setEnabled(false);
		removeButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent se) {
				removeSelectedItems();
			}
		});
	}

	/**
	 * Create the table viewer for this editor.
	 * 
	 * @param toolkit The Eclipse form's toolkit
	 * @param parent
	 */
	private void createTableViewer(FormToolkit toolkit, Composite parent) {
		String[] columns = new String[] {
			getResourceString("property.jad.midlet.name"),
			getResourceString("property.jad.midlet.icon"),
			getResourceString("property.jad.midlet.class"),
		};
		
		// Setup the table
		int styles = 
			SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | 
			SWT.BORDER | SWT.FULL_SELECTION;
		Table table = toolkit.createTable(parent, styles);
		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		table.setLayoutData(new GridData(GridData.FILL_BOTH));
		table.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				TableItem selected = (TableItem) e.item;
				removeButton.setEnabled(
					selected.getParent().getSelectionCount() > 0);
			}
		});
		tableViewer = new TableViewer(table);
		
		// Set the table layout on the table
		TableLayout layout = new TableLayout();
		
		int width = 100 / columns.length;
		for (int i = 0; i < columns.length; i++) {
			TableColumn column = new TableColumn(table, SWT.NONE);
			column.setText(columns[i]);
			layout.addColumnData(new ColumnWeightData(width));
		}
		table.setLayout(layout);
		
		// Set the content providers
		tableViewer.setContentProvider(new TableContentProvider());
		tableViewer.setLabelProvider(new TableLabelProvider());
		
		// Wire up the cell modification handling
		tableViewer.setCellModifier(new CellModifier());
		tableViewer.setColumnProperties(PROPERTIES);
		tableViewer.setCellEditors(new CellEditor[] {
				new TextCellEditor(table),
				new TextCellEditor(table),
// TODO	new IconCellEditor(table),
				new MidletCellEditor(table),
			});

		// Get some data into the viewer
		tableViewer.setInput(getEditorInput());
		tableViewer.refresh();
	}

	/**
	 * Return the java project holding the JAD file.
	 * 
	 * @return
	 */
	private IJavaProject getJavaProject() {
		IProject project = getProject();
		return (project == null) ? null : JavaCore.create(project);
	}
	
	/**
	 * Return the project that holds the JAD file being
	 * editted.
	 * 
	 * @return
	 */
	private IProject getProject() {
		IProject project = null;
		
		IEditorInput input = getEditorInput();
		if (input instanceof IFileEditorInput) {
			IFile file = ((IFileEditorInput) input).getFile();
			project = file.getProject();
		}
		
		return project;
	}
	
	/**
	 * Remove the items currently selected within the table.
	 */
	private void removeSelectedItems() {
		int[] indices = tableViewer.getTable().getSelectionIndices();
		
		for (int i = indices.length; i > 0; i--) {
			int index = indices[i - 1];
			midlets.remove(index);
		}
		
        setDirty(true);
		tableViewer.refresh();
	}
	
	/**
	 * Update the midlet properties from the current
	 * preference store.
	 */
	private void updateMidletProperties() {
		midlets.clear();
		IPreferenceStore store = getPreferenceStore();
		
		// This is sort of ugly, but IPreferenceStore does not
		// allow getting the complete list of preference keys
		for (int i = 1; i < 1000; i++) {
			String propName = MIDLET_PREFIX + i;
			
			if (store.contains(propName)) {
                String propValue = store.getString(propName);
				midlets.add(new MidletDefinition(propValue));
			} else {
				break;
			}
		}

        storedMidletCount = midlets.size();		
		if (tableViewer != null) tableViewer.refresh();
	}
}

⌨️ 快捷键说明

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