/* * Copyright (C) 2012 The Android Open Source Project * * 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 com.motorola.studio.android.remote.ui; import java.util.Properties; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.sequoyah.device.framework.model.IInstance; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IWorkbenchPropertyPage; import org.eclipse.ui.dialogs.PropertyPage; import com.motorola.studio.android.adt.ISerialNumbered; import com.motorola.studio.android.remote.instance.RemoteDeviceInstance; import com.motorola.studio.android.remote.ui.RemotePropertiesComposite.RemotePropertiesChangedListener; /** * Property page for Android Remote Devices. */ public class RemoteDevicePropertiesPage extends PropertyPage implements RemotePropertiesChangedListener, IWorkbenchPropertyPage { private RemotePropertiesComposite composite; /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ @Override protected Control createContents(Composite parent) { String host = ""; String port = ""; String timeout = ""; IInstance instance = null; IAdaptable adaptable = getElement(); if (adaptable instanceof IInstance) { instance = (IInstance) adaptable; Properties prop = instance.getProperties(); String propHost = prop.getProperty(RemoteDeviceInstance.PROPERTY_HOST); String propPort = prop.getProperty(RemoteDeviceInstance.PROPERTY_PORT); String propTimeout = prop.getProperty(RemoteDeviceInstance.PROPERTY_TIMEOUT); host = (propHost != null) ? propHost : ""; port = (propPort != null) ? propPort : ""; timeout = (propTimeout != null) ? propTimeout : ""; } composite = new RemotePropertiesComposite(parent, host, port, timeout, (ISerialNumbered) instance); composite.addPropertyChangeListener(this); composite.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { composite.removePropertyChangeListener(RemoteDevicePropertiesPage.this); } }); setErrorMessage(composite.getErrorMessage()); noDefaultAndApplyButton(); return composite; } /* (non-Javadoc) * @see com.motorola.studio.android.remote.ui.RemotePropertiesComposite.RemotePropertiesChangedListener#propertiesChanged() */ public void propertiesChanged() { setErrorMessage(composite.getErrorMessage()); setValid(isValid()); } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#performOk() */ @Override public boolean performOk() { String host = composite.getHost(); int port = composite.getPort(); int timeout = composite.getTimeout(); IAdaptable adaptable = getElement(); if (adaptable instanceof IInstance) { IInstance instance = (IInstance) adaptable; Properties prop = instance.getProperties(); prop.setProperty(RemoteDeviceInstance.PROPERTY_HOST, host); prop.setProperty(RemoteDeviceInstance.PROPERTY_PORT, Integer.toString(port)); prop.setProperty(RemoteDeviceInstance.PROPERTY_TIMEOUT, Integer.toString(timeout)); } return super.performOk(); } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#isValid() */ @Override public boolean isValid() { return (composite.getErrorMessage() == null); } }