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 {@link Double}.
     22  *
     23  * @author scheglov_ke
     24  * @coverage core.model.property.editor
     25  */
     26 public final class DoubleObjectPropertyEditor extends AbstractTextPropertyEditor {
     27   ////////////////////////////////////////////////////////////////////////////
     28   //
     29   // Instance
     30   //
     31   ////////////////////////////////////////////////////////////////////////////
     32   public static final DoubleObjectPropertyEditor INSTANCE = new DoubleObjectPropertyEditor();
     33 
     34   private DoubleObjectPropertyEditor() {
     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 == null) {
     46       return "null";
     47     }
     48     if (value instanceof Double) {
     49       return value.toString();
     50     }
     51     return null;
     52   }
     53 
     54   ////////////////////////////////////////////////////////////////////////////
     55   //
     56   // Editing
     57   //
     58   ////////////////////////////////////////////////////////////////////////////
     59   @Override
     60   protected String getEditorText(Property property) throws Exception {
     61     return getText(property);
     62   }
     63 
     64   @Override
     65   protected boolean setEditorText(Property property, String text) throws Exception {
     66     text = text.trim();
     67     // check for delete
     68     if (text.length() == 0) {
     69       property.setValue(Property.UNKNOWN_VALUE);
     70       return true;
     71     }
     72     // check for "null"
     73     if (text.equals("null")) {
     74       property.setValue(null);
     75       return true;
     76     }
     77     // prepare value
     78     Double value;
     79     try {
     80       value = Double.valueOf(text);
     81     } catch (Throwable e) {
     82       UiUtils.openWarning(
     83           DesignerPlugin.getShell(),
     84           property.getTitle(),
     85           MessageFormat.format(ModelMessages.DoubleObjectPropertyEditor_notValidDouble, text));
     86       return false;
     87     }
     88     // modify property
     89     property.setValue(value);
     90     return true;
     91   }
     92 }
     93