use of com.android.tools.idea.ui.properties.swing.TextProperty in project android by JetBrains.
the class ConfigureDeviceOptionsStep method onWizardStarting.
@Override
protected void onWizardStarting(@NotNull ModelWizard.Facade wizard) {
myDeviceTypeComboBox.setModel(new CollectionComboBoxModel<>(AvdWizardUtils.ALL_DEVICE_TAGS));
myDeviceTypeComboBox.setRenderer(new ListCellRendererWrapper<IdDisplay>() {
@Override
public void customize(JList list, IdDisplay value, int index, boolean selected, boolean hasFocus) {
if (value == null || SystemImage.DEFAULT_TAG.equals(value)) {
setText(DEFAULT_DEVICE_TYPE_LABEL);
} else {
setText(value.getDisplay());
}
}
});
myScrollPane.getVerticalScrollBar().setUnitIncrement(10);
myHelpAndErrorLabel.setBackground(JBColor.background());
myHelpAndErrorLabel.setForeground(JBColor.foreground());
myHelpAndErrorLabel.setBorder(BorderFactory.createEmptyBorder(15, 15, 10, 10));
myDiagScreenSizeAdapter = new StringToDoubleAdapterProperty(new TextProperty(myDiagonalScreenSize), 1, 2);
myScreenResWidthAdapter = new StringToIntAdapterProperty(new TextProperty(myScreenResolutionWidth));
myScreenResHeightAdapter = new StringToIntAdapterProperty(new TextProperty(myScreenResolutionHeight));
attachBindingsAndValidators();
}
use of com.android.tools.idea.ui.properties.swing.TextProperty in project android by JetBrains.
the class ConfigureAvdOptionsStep method bindComponents.
private void bindComponents() {
myBindings.bindTwoWay(new TextProperty(myAvdDisplayName), getModel().avdDisplayName());
myBindings.bind(new TextProperty(myAvdId), new StringExpression(getModel().avdDisplayName()) {
@NotNull
@Override
public String get() {
String displayName = getModel().avdDisplayName().get();
getModel().avdId().set(StringUtil.isNotEmpty(displayName) ? AvdWizardUtils.cleanAvdName(connection, displayName, !displayName.equals(myOriginalName)) : "");
return getModel().avdId().get();
}
});
myBindings.bindTwoWay(new TextProperty(mySystemImageName), getModel().systemImageName());
myBindings.bindTwoWay(new TextProperty(mySystemImageDetails), getModel().systemImageDetails());
myBindings.bindTwoWay(new SelectedProperty(myQemu2CheckBox), getModel().useQemu2());
myBindings.bindTwoWay(new SelectedItemProperty<Integer>(myCoreCount), getModel().cpuCoreCount());
myBindings.bindTwoWay(myRamStorage.storage(), getModel().getAvdDeviceData().ramStorage());
myBindings.bindTwoWay(myVmHeapStorage.storage(), getModel().vmHeapStorage());
myBindings.bindTwoWay(myInternalStorage.storage(), getModel().internalStorage());
myBindings.bindTwoWay(myBuiltInSdCardStorage.storage(), new OptionalToValuePropertyAdapter<Storage>(getModel().sdCardStorage()));
myBindings.bindTwoWay(new SelectedItemProperty<GpuMode>(myHostGraphics), getModel().hostGpuMode());
myBindings.bindTwoWay(new SelectedProperty(myDeviceFrameCheckbox), getModel().hasDeviceFrame());
myBindings.bindTwoWay(new SelectedItemProperty<File>(mySkinComboBox.getComboBox()), getModel().getAvdDeviceData().customSkinFile());
myOrientationToggle.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
ScreenOrientation orientation = myOrientationToggle.getSelectedElement();
if (orientation == null) {
getModel().selectedAvdOrientation().set(ScreenOrientation.PORTRAIT);
} else {
getModel().selectedAvdOrientation().set(orientation);
}
}
});
FileChooserDescriptor fileChooserDescriptor = new FileChooserDescriptor(true, false, false, false, false, false) {
@Override
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
return super.isFileVisible(file, true);
}
};
fileChooserDescriptor.setHideIgnored(false);
myExternalSdCard.addBrowseFolderListener("Select SD Card", "Select an existing SD card image", myProject, fileChooserDescriptor);
myBindings.bindTwoWay(new TextProperty(myExternalSdCard.getTextField()), getModel().externalSdCardLocation());
myBindings.bindTwoWay(new OptionalToValuePropertyAdapter<AvdCamera>(new SelectedItemProperty<AvdCamera>(myFrontCameraCombo)), getModel().selectedFrontCamera());
myBindings.bindTwoWay(new OptionalToValuePropertyAdapter<AvdCamera>(new SelectedItemProperty<AvdCamera>(myBackCameraCombo)), getModel().selectedBackCamera());
myBindings.bindTwoWay(new OptionalToValuePropertyAdapter<AvdNetworkSpeed>(new SelectedItemProperty<AvdNetworkSpeed>(mySpeedCombo)), getModel().selectedNetworkSpeed());
myBindings.bindTwoWay(new OptionalToValuePropertyAdapter<AvdNetworkLatency>(new SelectedItemProperty<AvdNetworkLatency>(myLatencyCombo)), getModel().selectedNetworkLatency());
myBindings.bindTwoWay(new SelectedProperty(myEnableComputerKeyboard), getModel().enableHardwareKeyboard());
myBindings.bindTwoWay(new SelectedProperty(myExternalRadioButton), getModel().useExternalSdCard());
myBindings.bindTwoWay(new SelectedProperty(myBuiltInRadioButton), getModel().useBuiltInSdCard());
myCheckSdForChanges = true;
}
use of com.android.tools.idea.ui.properties.swing.TextProperty in project android by JetBrains.
the class ConfigureTemplateParametersStep method onEntering.
@Override
protected void onEntering() {
// The Model TemplateHandle may have changed, rebuild the panel
resetPanel();
final TemplateHandle templateHandle = getModel().getTemplateHandle();
ApplicationManager.getApplication().invokeLater(() -> {
// We want to set the label's text AFTER the wizard has been packed. Otherwise, its
// width calculation gets involved and can really stretch out some wizards if the label is
// particularly long (see Master/Detail Activity for example).
myTemplateDescriptionLabel.setText(WizardUtils.toHtmlString(Strings.nullToEmpty(templateHandle.getMetadata().getDescription())));
}, ModalityState.any());
final IconProperty thumb = new IconProperty(myTemplateThumbLabel);
BoolProperty thumbVisibility = new VisibleProperty(myTemplateThumbLabel);
myBindings.bind(thumb, new Expression<Optional<Icon>>(myThumbPath) {
@NotNull
@Override
public Optional<Icon> get() {
return myThumbnailsCache.getUnchecked(new File(templateHandle.getRootPath(), myThumbPath.get()));
}
});
myBindings.bind(thumbVisibility, new Expression<Boolean>(thumb) {
@NotNull
@Override
public Boolean get() {
return thumb.get().isPresent();
}
});
myThumbPath.set(getDefaultThumbnailPath());
final TextProperty parameterDescription = new TextProperty(myParameterDescriptionLabel);
myBindings.bind(new VisibleProperty(myFooterSeparator), new Expression<Boolean>(parameterDescription) {
@NotNull
@Override
public Boolean get() {
return !parameterDescription.get().isEmpty();
}
});
Module module = myFacet == null ? null : myFacet.getModule();
final Collection<Parameter> parameters = templateHandle.getMetadata().getParameters();
for (final Parameter parameter : parameters) {
RowEntry row = createRowForParameter(module, parameter);
final ObservableValue<?> property = row.getProperty();
if (property != null) {
property.addListener(sender -> {
if (myEvaluationState != EvaluationState.EVALUATING) {
myUserValues.put(parameter, property.get());
enqueueEvaluateParameters();
}
});
final ActionGroup resetParameterGroup = new ActionGroup() {
@NotNull
@Override
public AnAction[] getChildren(@Nullable AnActionEvent e) {
return new AnAction[] { new ResetParameterAction(parameter) };
}
};
row.getComponent().addMouseListener(new PopupHandler() {
@Override
public void invokePopup(Component comp, int x, int y) {
ActionManager.getInstance().createActionPopupMenu(ActionPlaces.UNKNOWN, resetParameterGroup).getComponent().show(comp, x, y);
}
});
}
myParameterRows.put(parameter, row);
row.addToPanel(myParametersPanel);
}
if (mySourceSets.size() > 1) {
RowEntry row = new RowEntry<>("Target Source Set", new SourceSetComboProvider(mySourceSets));
row.setEnabled(mySourceSets.size() > 1);
row.addToPanel(myParametersPanel);
//noinspection unchecked
SelectedItemProperty<AndroidSourceSet> sourceSet = (SelectedItemProperty<AndroidSourceSet>) row.getProperty();
// SourceSetComboProvider always sets this
assert sourceSet != null;
myBindings.bind(getModel().getSourceSet(), new OptionalToValuePropertyAdapter<>(sourceSet));
sourceSet.addListener(sender -> enqueueEvaluateParameters());
}
myValidatorPanel.registerValidator(myInvalidParameterMessage, message -> (message.isEmpty() ? Validator.Result.OK : new Validator.Result(Validator.Severity.ERROR, message)));
// TODO: This code won't be needed until we migrate this enough to support
// NewAndroidApplication/template.xml and NewAndroidLibrary/template.xml
// Add it in then. Probably we can add an optional validator API to ComponentProvider? Then we
// could move this code into EnumComboProvider and it won't be a hack anymore.
//
// if (value instanceof ApiComboBoxItem) {
// ApiComboBoxItem selectedItem = (ApiComboBoxItem)value;
//
// if (minApi != null && selectedItem.minApi > minApi.getFeatureLevel()) {
// setErrorHtml(String.format("The \"%s\" option for %s requires a minimum API level of %d",
// selectedItem.label, param.name, selectedItem.minApi));
// return false;
// }
// if (buildApi != null && selectedItem.minBuildApi > buildApi) {
// setErrorHtml(String.format("The \"%s\" option for %s requires a minimum API level of %d",
// selectedItem.label, param.name, selectedItem.minBuildApi));
// return false;
// }
//}
evaluateParameters();
}
use of com.android.tools.idea.ui.properties.swing.TextProperty in project android by JetBrains.
the class StudioWizardLayout method decorate.
@NotNull
@Override
public JPanel decorate(@NotNull ObservableString title, @NotNull JPanel innerPanel) {
myBindings.bind(new TextProperty(myTitleLabel), title);
myCenterPanel.add(innerPanel);
return myRootPanel;
}
Aggregations