diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/InputDensityDialog.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/InputDensityDialog.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/InputDensityDialog.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/InputDensityDialog.java new file mode 100644 index 000000000..d102225b2 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/lint/InputDensityDialog.java @@ -0,0 +1,118 @@ +/* + * 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.resources.Density; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +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.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; + +import java.util.ArrayList; +import java.util.List; + +class InputDensityDialog extends Dialog { + private Combo mCombo; + /** + * Density value being chosen - static to keep most recently chosen value + * across repeated invocations + */ + private static int sDpi = Density.DEFAULT_DENSITY; + + InputDensityDialog(Shell parentShell) { + super(parentShell); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite container = (Composite) super.createDialogArea(parent); + container.setLayout(new GridLayout(1, false)); + + Label lblWhatIsThe = new Label(container, SWT.WRAP); + lblWhatIsThe.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); + lblWhatIsThe.setText("What is the screen density the current px value works with?"); + + mCombo = new Combo(container, SWT.READ_ONLY); + GridData gdCombo = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); + gdCombo.widthHint = 200; + mCombo.setLayoutData(gdCombo); + int initialIndex = 0; + List<String> s = new ArrayList<String>(); + int index = 0; + for (Density density : Density.values()) { + if (density == Density.NODPI) { + continue; + } + if (density.getDpiValue() == sDpi) { + initialIndex = index; + } + s.add(getLabel(density)); + index++; + } + String[] items = s.toArray(new String[s.size()]); + mCombo.setItems(items); + mCombo.select(initialIndex); + + return container; + } + + private static String getLabel(Density density) { + return String.format("%1$s (%2$d)", density.getShortDisplayValue(), density.getDpiValue()); + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); + createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); + } + + @Override + protected Point getInitialSize() { + return new Point(450, 150); + } + + @Override + public boolean close() { + String description = mCombo.getItem(mCombo.getSelectionIndex()); + + for (Density density : Density.values()) { + if (description.equals(getLabel(density))) { + sDpi = density.getDpiValue(); + break; + } + } + + return super.close(); + } + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText("Choose Density"); + } + + int getDensity() { + return sDpi; + } +} |