aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java124
1 files changed, 124 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java
new file mode 100644
index 000000000..be987d498
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/ColumnDialog.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/org/documents/epl-v10.php
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.ide.eclipse.adt.internal.lint;
+
+import com.android.ide.eclipse.adt.AdtPlugin;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+
+/**
+ * Dialog for editing visible columns in the {@link LintList}
+ */
+class ColumnDialog extends SelectionStatusDialog implements Listener, IStructuredContentProvider {
+ private LintColumn[] mColumns;
+ private LintColumn[] mSelectedColumns;
+ private CheckboxTableViewer mViewer;
+
+ public ColumnDialog(Shell parent, LintColumn[] fields, LintColumn[] selected) {
+ super(parent);
+ mColumns = fields;
+ mSelectedColumns = selected;
+ setTitle("Select Visible Columns");
+ setHelpAvailable(false);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite container = new Composite(parent, SWT.NONE);
+ container.setLayout(new GridLayout(1, false));
+ GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
+ // Wide enough to accommodate the error label
+ gridData.widthHint = 500;
+ container.setLayoutData(gridData);
+
+ Label lblSelectVisibleColumns = new Label(container, SWT.NONE);
+ lblSelectVisibleColumns.setText("Select visible columns:");
+
+ mViewer = CheckboxTableViewer.newCheckList(container,
+ SWT.BORDER | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
+ Table table = mViewer.getTable();
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+ mViewer.setContentProvider(this);
+
+ mViewer.setInput(mColumns);
+ mViewer.setCheckedElements(mSelectedColumns);
+
+ validate();
+
+ return container;
+ }
+
+ @Override
+ protected void computeResult() {
+ Object[] checked = mViewer.getCheckedElements();
+ mSelectedColumns = new LintColumn[checked.length];
+ for (int i = 0, n = checked.length; i < n; i++) {
+ mSelectedColumns[i] = (LintColumn) checked[i];
+ }
+ }
+
+ public LintColumn[] getSelectedColumns() {
+ return mSelectedColumns;
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ validate();
+ }
+
+ private void validate() {
+ IStatus status;
+ computeResult();
+
+ if (mViewer.getCheckedElements().length <= 1) {
+ status = new Status(IStatus.ERROR, AdtPlugin.PLUGIN_ID,
+ "Must selected at least one column");
+ } else {
+ status = new Status(IStatus.OK, AdtPlugin.PLUGIN_ID, null);
+ }
+ updateStatus(status);
+ }
+
+ // ---- Implements IStructuredContentProvider ----
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return mColumns;
+ }
+ } \ No newline at end of file