📄 jadmidletseditorpage.java
字号:
} 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 + -