Search in sources :

Example 6 with TextProperty

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();
}
Also used : IdDisplay(com.android.sdklib.repository.IdDisplay) StringToIntAdapterProperty(com.android.tools.idea.ui.properties.adapters.StringToIntAdapterProperty) StringToDoubleAdapterProperty(com.android.tools.idea.ui.properties.adapters.StringToDoubleAdapterProperty) TextProperty(com.android.tools.idea.ui.properties.swing.TextProperty)

Example 7 with TextProperty

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;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) GpuMode(com.android.sdklib.internal.avd.GpuMode) ListSelectionEvent(javax.swing.event.ListSelectionEvent) NotNull(org.jetbrains.annotations.NotNull) TextProperty(com.android.tools.idea.ui.properties.swing.TextProperty) FileChooserDescriptor(com.intellij.openapi.fileChooser.FileChooserDescriptor) ListSelectionListener(javax.swing.event.ListSelectionListener) ScreenOrientation(com.android.resources.ScreenOrientation) SelectedItemProperty(com.android.tools.idea.ui.properties.swing.SelectedItemProperty) StringExpression(com.android.tools.idea.ui.properties.expressions.string.StringExpression) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) SelectedProperty(com.android.tools.idea.ui.properties.swing.SelectedProperty)

Example 8 with TextProperty

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();
}
Also used : PopupHandler(com.intellij.ui.PopupHandler) NotNull(org.jetbrains.annotations.NotNull) IconProperty(com.android.tools.idea.ui.properties.swing.IconProperty) VisibleProperty(com.android.tools.idea.ui.properties.swing.VisibleProperty) TextProperty(com.android.tools.idea.ui.properties.swing.TextProperty) SelectedItemProperty(com.android.tools.idea.ui.properties.swing.SelectedItemProperty) Module(com.intellij.openapi.module.Module) File(java.io.File) Nullable(org.jetbrains.annotations.Nullable) Validator(com.android.tools.idea.ui.validation.Validator) AndroidSourceSet(com.android.tools.idea.npw.project.AndroidSourceSet)

Example 9 with TextProperty

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;
}
Also used : TextProperty(com.android.tools.idea.ui.properties.swing.TextProperty) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

TextProperty (com.android.tools.idea.ui.properties.swing.TextProperty)9 SelectedProperty (com.android.tools.idea.ui.properties.swing.SelectedProperty)5 NotNull (org.jetbrains.annotations.NotNull)5 File (java.io.File)4 SelectedItemProperty (com.android.tools.idea.ui.properties.swing.SelectedItemProperty)3 IdDisplay (com.android.sdklib.repository.IdDisplay)2 AndroidSourceSet (com.android.tools.idea.npw.project.AndroidSourceSet)2 StringToIntAdapterProperty (com.android.tools.idea.ui.properties.adapters.StringToIntAdapterProperty)2 StringProperty (com.android.tools.idea.ui.properties.core.StringProperty)2 FormatExpression (com.android.tools.idea.ui.properties.expressions.string.FormatExpression)2 EnabledProperty (com.android.tools.idea.ui.properties.swing.EnabledProperty)2 Nullable (org.jetbrains.annotations.Nullable)2 ScreenOrientation (com.android.resources.ScreenOrientation)1 GpuMode (com.android.sdklib.internal.avd.GpuMode)1 VectorAsset (com.android.tools.idea.npw.assetstudio.assets.VectorAsset)1 AndroidVectorIconGenerator (com.android.tools.idea.npw.assetstudio.icon.AndroidVectorIconGenerator)1 VectorAssetBrowser (com.android.tools.idea.npw.assetstudio.ui.VectorAssetBrowser)1 VectorIconButton (com.android.tools.idea.npw.assetstudio.ui.VectorIconButton)1 VectorImageComponent (com.android.tools.idea.ui.VectorImageComponent)1 BindingsManager (com.android.tools.idea.ui.properties.BindingsManager)1