Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

eclipse-rcp:binding 2008/07/08 11:26 eclipse-rcp:binding 2020/09/25 09:41 aktuell
Zeile 1: Zeile 1:
-[[eclipse-rcp|Eclipse-RCP]]+[[eclipse-rcp|Java - Eclipse-RCP]]
- +====== Eclipse - Binding (ab Eclipse 3.3) ======
-====== Eclipse - Binding (Eclipse 3.3) ======+
JFace-Data-Binding ab Eclipse 3.3\\ JFace-Data-Binding ab Eclipse 3.3\\
\\ \\
Zeile 10: Zeile 9:
  * Geburtsdatum\\   * Geburtsdatum\\
bestehen.\\ bestehen.\\
 +\\ 
 +<html> 
 +  <script type="text/javascript"><!-- 
 +      google_ad_client="pub-9681858985507948"; 
 +      google_ad_width = 468; 
 +      google_ad_height = 60; 
 +      google_ad_format = "468x60_as"; 
 +      google_ad_type = "text"; 
 +      google_ad_channel = ""; 
 +      google_color_border = "cccccc"; 
 +      google_color_bg = "FFFFFF"; 
 +      google_color_link = "1d2d8c"; 
 +      google_color_text = "000000"; 
 +      google_color_url = "1d2d8c"; 
 +      //--> 
 +  </script> 
 +  <script type="text/javascript" 
 +      src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
 +  </script> 
 +</html> 
 +\\
===== Binding-Methode ===== ===== Binding-Methode =====
Die Binding-Methode kann beispielsweise in der MyFormPart-Klasse implementiert werden.\\ Die Binding-Methode kann beispielsweise in der MyFormPart-Klasse implementiert werden.\\
Zeile 18: Zeile 37:
  m_bindingContext = new DataBindingContext();   m_bindingContext = new DataBindingContext();
-  Binding binding; +  // Das Textfeld ";m_lastnameTxt" für den Nachnamen an das Model-Attribut "m_lastname" binden: 
-         +  m_bindingContext.bindValue(SWTObservables.observeText(m_lastnameTxt, 
-  binding = m_bindingContext.bindValue(SWTObservables.observeText(m_lastnameTxt, +         SWT.Modify), BeansObservables.observeValue(model, MyModel.PROP_LASTNAME), null, null);
-             SWT.Modify), BeansObservables.observeValue(model, Model.PROP_LASTNAME), null, null);+
-  binding = m_bindingContext.bindValue(SWTObservables.observeText(m_firstnameTxt, +  // Das Textfeld "m_firstnameTxt" für den Nachnamen an das Model-Attribut "m_firstname" binden: 
-             SWT.Modify), BeansObservables.observeValue(model, Model.PROP_FIRSTNAME), null, null);+  m_bindingContext.bindValue(SWTObservables.observeText(m_firstnameTxt, 
 +         SWT.Modify), BeansObservables.observeValue(model, MyModel.PROP_FIRSTNAME), null, null); 
 +   
 +  // Das Textfeld "m_birthdateTxt" für den Nachnamen an das Model-Attribut "m_birthday" binden: 
 +  m_bindingContext.bindValue(SWTObservables.observeText(m_birthdateTxt, 
 +        SWT.Modify), BeansObservables.observeValue(model, MyModel.PROP_BIRTHDAY),  
 +        m_targetToModelStrategy, m_modelToTargetStrategy);
 +  // UpdateStrategy initialisieren (Konverter und Validatoren festlegen):
  initUpdateStrategy();   initUpdateStrategy();
-  binding = m_bindingContext.bindValue(SWTObservables.observeText(m_birthdateTxt, 
-            SWT.Modify), BeansObservables.observeValue(model, IModel.PROP_BIRTHDAY),  
-            m_targetToModelStrategy, m_modelToTargetStrategy); 
} }
</code> </code>
Zeile 71: Zeile 93:
        assert fromObject instanceof String;         assert fromObject instanceof String;
        String str = (String) fromObject;         String str = (String) fromObject;
-        return DateConv.toDate(str);+        SimpleDateFormat sd = new SimpleDateFormat("dd.MM.yyyy");  
 +        Date date = null; 
 +        try { 
 +            Date newDate = sd.parse(dateString)
 +        } catch (Exception e) { 
 +            e.printstacktrace(); 
 +        } 
 +        return date;
      }       }
Zeile 117: Zeile 146:
  m_modelToTargetUpdateStrategy1 = new UpdateValueStrategy();   m_modelToTargetUpdateStrategy1 = new UpdateValueStrategy();
 +// oder bei spezieller Policy (Default: UpdateValueStrategy.POLICYUPDATE)
 +// m_modelToTargetUpdateStrategy1 = new UpdateValueStrategy(UpdateValueStrategy.NEVER);
  m_modelToTargetUpdateStrategy1.setConverter(date2StrConverter);   m_modelToTargetUpdateStrategy1.setConverter(date2StrConverter);
  m_targetToModelUpdateStrategy = new UpdateValueStrategy();   m_targetToModelUpdateStrategy = new UpdateValueStrategy();
Zeile 127: Zeile 158:
\\ \\
\\ \\
 +
===== Model-Klasse ===== ===== Model-Klasse =====
<code java> <code java>
Zeile 133: Zeile 165:
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
-public class Model implements IModel {+public class MyModel {
  String PROP_LASTNAME  = "lastname";   String PROP_LASTNAME  = "lastname";
  String PROP_FIRSTNAME = "firstname";   String PROP_FIRSTNAME = "firstname";
Zeile 143: Zeile 175:
  private Date  m_birthday;   private Date  m_birthday;
-  public Model(String lastname, String firstname, Date birthday) {+  public MyModel(String lastname, String firstname, Date birthday) {
      m_lastname = lastname;       m_lastname = lastname;
      m_firstname = firstname;       m_firstname = firstname;
Zeile 204: Zeile 236:
\\ \\
\\ \\
 +===== Button-Enablement an Validationstatus binden =====
 +<code java>
 +  public void bindButtonEnablementToValidationStatus(final Button button) {
 +
 +    final IObservableValue buttonEnable = SWTObservables.observeEnabled(button);
 +    final IObservableValue validationStatus =
 +      new AggregateValidationStatus(myBindingContext.getValidationRealm(), myBindingContext.getBindings(), AggregateValidationStatus.MAX_SEVERITY);
 +    myBindingContext.bindValue(buttonEnable,
 +                              validationStatus,
 +                              new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
 +                              new UpdateValueStrategy().setConverter(new Converter(IStatus.class, Boolean.TYPE) {
 +                                @Override
 +                                public Object convert(final Object fromObject) {
 +                                  return new Boolean(((IStatus) fromObject).isOK());
 +                                }
 +                              }));
 +  }
 +</code>
 +\\
 +\\
 +\\
 +
===== Fehlersuche ===== ===== Fehlersuche =====
Wird eine setXYZ(..)-Methode nicht gefunden, so sollte als Erstes die Schreibweise der Property-Konstanten (hier: PROP_XXXXX) überprüft werden. Diese muss genauso geschrieben werden wie die get und set-Methoden. Lediglich das get und set wird weggelassen und der erste Buchstabe wird kleingeschrieben.\\ Wird eine setXYZ(..)-Methode nicht gefunden, so sollte als Erstes die Schreibweise der Property-Konstanten (hier: PROP_XXXXX) überprüft werden. Diese muss genauso geschrieben werden wie die get und set-Methoden. Lediglich das get und set wird weggelassen und der erste Buchstabe wird kleingeschrieben.\\
Zeile 209: Zeile 263:
es gäbe die Methoden getValue() und setValue(int newValue), so müsste die Konstante als "value" definiert werden.\\ es gäbe die Methoden getValue() und setValue(int newValue), so müsste die Konstante als "value" definiert werden.\\
Beispiel:\\ Beispiel:\\
-<code java>PROP_VALUE = "value";</code>\\+<code java>public static final String PROP_VALUE = "value";</code>\\
Als Zweites kann man einen Breakpoint in der Methode ValueBinding#doUpdate(..) setzen (z.B. beim Aufruf der Methode updateValueStrategy.doSet(..)) um den Fehler zu finden.\\ Als Zweites kann man einen Breakpoint in der Methode ValueBinding#doUpdate(..) setzen (z.B. beim Aufruf der Methode updateValueStrategy.doSet(..)) um den Fehler zu finden.\\
Achtung! In Eclipse 3.3 gibt es einen Fehler: Die PropertyMethode/die Property-Konstante darf niemals mit zwei Großbuchstaben beginnen (also nicht: getVAlue() mit "vAlue")!!\\ Achtung! In Eclipse 3.3 gibt es einen Fehler: Die PropertyMethode/die Property-Konstante darf niemals mit zwei Großbuchstaben beginnen (also nicht: getVAlue() mit "vAlue")!!\\

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007