/* * ********************************************************************** * * Copyright (C) 2010 - 2014 * * [MQTTConnectFragment.java] * JACPFX Project (https://github.com/JacpFX/JacpFX/) * All rights reserved. * * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * 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 org.jacpfx.gui.fragment; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.ChoiceBox; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import org.jacpfx.api.annotations.Resource; import org.jacpfx.api.annotations.fragment.Fragment; import org.jacpfx.api.fragment.Scope; import org.jacpfx.dto.ConnectionProperties; import org.jacpfx.gui.configuration.BaseConfig; import org.jacpfx.rcp.context.Context; /** * Created by Andy Moncsek on 27.12.13. This fragment contains the MQTT connection dialg. */ @Fragment(id = BaseConfig.MQTT_CONNECT_FRAGMENT, viewLocation = "/fxml/MQTTConnectFragment.fxml", resourceBundleLocation = "bundles.languageBundle", localeID = "en_US", scope = Scope.SINGLETON) public class MQTTConnectFragment { @Resource private Context context; @FXML private ChoiceBox connection; @FXML private VBox ipinput; private String value; private ObservableList<String> values = FXCollections.observableArrayList( "m2m.eclipse.org", "test.mosquitto.org", "dev.rabbitmq.com", "broker.mqttdashboard.com", "other"); @FXML private TextField connectAddress; public void init() { connection.setItems(values); connection.getSelectionModel().selectFirst(); value = "m2m.eclipse.org"; connection.getSelectionModel().selectedItemProperty() .addListener((ov, old_val, new_val) -> { if (new_val.equals("other")) { ipFieldVisible(true); } else { ipFieldVisible(false); } value = (String) new_val; }); } private void ipFieldVisible(boolean isVisible) { ipinput.setDisable(!isVisible); ipinput.setVisible(isVisible); } @FXML public void connectToServer() { if (!value.equals("other")) { send(new ConnectionProperties("tcp://", value, "1883", ConnectionProperties.PROVIDER.MQTT)); context.hideModalDialog(); } final String connectValue = connectAddress.getText(); if (connectValue == null || connectValue.isEmpty()) return; final String[] val = connectValue.split("://"); if (val.length < 2) return; final String protocol = val[0] + "://"; final String[] hostAndPort = val[1].split(":"); if (hostAndPort.length < 2) return; send(new ConnectionProperties(protocol, hostAndPort[0], hostAndPort[1], ConnectionProperties.PROVIDER.MQTT)); context.hideModalDialog(); } private void send(ConnectionProperties connectionProperties) { context.send(BaseConfig.CONFIG_PROVIDER, connectionProperties); } }