Home | History | Annotate | Download | only in editor
      1 /*******************************************************************************
      2  * Copyright (c) 2011 Google, Inc.
      3  * All rights reserved. This program and the accompanying materials
      4  * are made available under the terms of the Eclipse Public License v1.0
      5  * which accompanies this distribution, and is available at
      6  * http://www.eclipse.org/legal/epl-v10.html
      7  *
      8  * Contributors:
      9  *    Google, Inc. - initial API and implementation
     10  *******************************************************************************/
     11 package org.eclipse.wb.internal.core.model.property.editor;
     12 
     13 import org.eclipse.wb.internal.core.DesignerPlugin;
     14 import org.eclipse.wb.internal.core.model.ModelMessages;
     15 import org.eclipse.wb.internal.core.model.property.Property;
     16 import org.eclipse.wb.internal.core.utils.ui.UiUtils;
     17 
     18 import java.text.MessageFormat;
     19 
     20 /**
     21  * The {@link PropertyEditor} for <code>double</code>.
     22  *
     23  * @author scheglov_ke
     24  * @coverage core.model.property.editor
     25  */
     26 public final class DoublePropertyEditor extends AbstractTextPropertyEditor {
     27   ////////////////////////////////////////////////////////////////////////////
     28   //
     29   // Instance
     30   //
     31   ////////////////////////////////////////////////////////////////////////////
     32   public static final PropertyEditor INSTANCE = new DoublePropertyEditor();
     33 
     34   private DoublePropertyEditor() {
     35   }
     36 
     37   ////////////////////////////////////////////////////////////////////////////
     38   //
     39   // Presentation
     40   //
     41   ////////////////////////////////////////////////////////////////////////////
     42   @Override
     43   public String getText(Property property) throws Exception {
     44     Object value = property.getValue();
     45     if (value instanceof Number) {
     46       double doubleValue = ((Number) value).doubleValue();
     47       return Double.toString(doubleValue);
     48     }
     49     return null;
     50   }
     51 
     52   ////////////////////////////////////////////////////////////////////////////
     53   //
     54   // Editing
     55   //
     56   ////////////////////////////////////////////////////////////////////////////
     57   @Override
     58   protected String getEditorText(Property property) throws Exception {
     59     return getText(property);
     60   }
     61 
     62   @Override
     63   protected boolean setEditorText(Property property, String text) throws Exception {
     64     text = text.trim();
     65     // check for delete
     66     if (text.length() == 0) {
     67       property.setValue(Property.UNKNOWN_VALUE);
     68     }
     69     // prepare value
     70     Double value;
     71     try {
     72       value = Double.valueOf(text);
     73     } catch (Throwable e) {
     74       UiUtils.openWarning(
     75           DesignerPlugin.getShell(),
     76           property.getTitle(),
     77           MessageFormat.format(ModelMessages.DoublePropertyEditor_notValidDouble, text));
     78       return false;
     79     }
     80     // modify property
     81     property.setValue(value);
     82     return true;
     83   }
     84 }