Eclipse的编辑器查看的相互作用(1)

1. 编辑器,视图交互和模型更新
1.1  概要
    在下面我们创建了一个项目,该项目展示视图器和编辑器使用的相互作用。

    我们将创建一个视图,显示几个人。一旦用户双击就打开一个编辑器中,用户可以编辑这个人名称,地址。

   下面的数据模型的假设,使一个人的姓氏是独一无二的。这种假设在现实世界中真实的过程是不能的。
1.2。创建项目
    创建一个新RCP项目"rcp.intro.editor" 使用"RCP application with a view"模板
1.3。创建和准备域模型
    创建一个包"rcp.intro.editor.model" ,在这包内创建下面的类.
 package rcp.intro.editor.model;

 public class Address {

private String street;
private String number;
private String postalCode;
private String city;
private String country;

public String getStreet() {

     return street;
}

public void setStreet(String street) {
    this.street = street;
}

public String getNumber() {
   return number;
}

public void setNumber(String number) {
this.number = number;
}

public String getPostalCode() {
return postalCode;
}

public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public String getCountry() {
return country;
}

public void setCountry(String country) {
this.country = country;
}

public String toString() {
     return street + " " + number + " " + postalCode + " " + city + " "+ country;
}

}

package rcp.intro.editor.model;

public class Person {
      private String firstName;
      private String lastName;
      private Address address;

      public Person(String firstName, String lastName) {
         this.firstName = firstName;
          this.lastName = lastName;
       }

public String getFirstName() {
  return firstName;
}

public void setFirstName(String firstName) {
  this.firstName = firstName;
}

public String getLastName() {
  return lastName;
}

public void setLastName(String lastName) {
  this.lastName = lastName;
}

public Address getAddress() {
  return address;
}

public void setAddress(Address address) {
  this.address = address;
}

@Override
public String toString() {
  return firstName + " " + lastName;
}

@Override
public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result
    + ((firstName == null) ? 0 : firstName.hashCode());
  result = prime * result
    + ((lastName == null) ? 0 : lastName.hashCode());
  return result;
}

@Override
public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Person other = (Person) obj;
  if (firstName == null) {
   if (other.firstName != null)
    return false;
   } else if (!firstName.equals(other.firstName))
    return false;
  if (lastName == null) {
     if (other.lastName != null)
       return false;
  } else if (!lastName.equals(other.lastName))
      return false;
  return true;
}

}


package rcp.intro.editor.model;

   import java.util.ArrayList;
   import java.util.List;

   public class MyModel {

     private List<Person> persons = new ArrayList<Person>();

     public List<Person> getPersons() {
    return persons;
 }

 public MyModel() {
    // 这里只是为了测试我们硬编码的人:
     Person person = new Person("Lars", "Vogel");
     person.setAddress(new Address());
     person.getAddress().setCountry("Germany");
     persons.add(person);
    person = new Person("Jim", "Knopf");
    person.setAddress(new Address());
    person.getAddress().setCountry("Germany");
    persons.add(person);
 }
}

请注意,我们重写了equals(和hashCode方法)。这使我们后来确定编辑每个人的权利。

(版权归原作者所有)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值