Heim Datenbank MySQL-Tutorial Eclipse GEF常用技巧

Eclipse GEF常用技巧

Jun 07, 2016 pm 03:05 PM
eclipse java 常用 技巧 进入

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 1、大纲视图右键菜单项受editpart的createEditPolicies()方法影响。例如 :虽然右键菜单提供了删除选项,但只要相关的treeeditpart没有install ComponentEditPolicy,那么当鼠标打开该节点的右键菜单

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  1、大纲视图右键菜单项受editpart的createEditPolicies()方法影响。例如 :虽然右键菜单提供了删除选项,但只要相关的treeeditpart没有install ComponentEditPolicy,那么当鼠标打开该节点的右键菜单时,是不会看到“删除”项的。

  2、和1类似,有时候某些作为容器元素的对象不希望被用户选中,也是通过修改policy来实现的。具体如下:

  editpart实现

  public class BoardPart extends ContainerPart {

  protected void createEditPolicies() {

  super.createEditPolicies();

  installEditPolicy(EditPolicy.LAYOUT_ROLE, new BoardLayoutEditPolicy());

  }

  }

  policy实现

  public class BoardLayoutEditPolicy extends XYLayoutEditPolicy {

  ...

  protected Command createChangeConstraintCommand(EditPart child,

  Object constraint) {

  return null;

  }

  ...

  }

  从上面的代码可以看出,只要createChangeConstraintCommand()返回null,那么容器元素就不会被选中。

  3、如果一个或多个图元的属性校验出错,希望自动选中,那么考虑对界面元素进行校验,然后使用下面的方法:

  /**

  * 选中未做关联的显示框

  * @param errorEls 错误显示框ArrayList

  */

  private void selectErrors(ArrayList errorEls) {

  EditPartViewer viewer = getGraphicalViewer();

  viewer.deselectAll(); //去掉所有选择项

  EditPart last = null;

  for(ElementView element:errorEls) {

  EditPart editpart = (EditPart) viewer.getEditPartRegistry().get(element);

  viewer.appendSelection(editpart); //添加选择元素

  last = editpart;

  }

  viewer.reveal(last); //将最后选中元素放到窗口可视区域

  }

  4、退出编辑器时提示保存

  根据国际惯例,编辑器退出却未保存时,一般都会弹出对话框提示用户选择是否关闭编辑器。这时我首先想到的是覆盖父类的dispose()方法,判断未保存就返回而不退出。可实践证明,eclipse RCP并不支持这样做。经过一番探索得知,需要实现ISaveablePart2接口,在promptToSaveOnClose()添加处理。代码如下:

  @Override

  public int promptToSaveOnClose() {

  if(this.isDirty && !UIHelper.comfirm("关闭提示", title + "还未保存,确定退出?"))

  return ISaveablePart2.CANCEL;

  else

  return ISaveablePart2.NO;

  }

  5、鼠标拖动自动调用选择工具

  处理此问题要从画布元素的editpart类入手。第一步修改createFigure()方法:

  protected IFigure createFigure() {

  ...

  fig.setOpaque(true);

  return fig;

  }

  第二步覆盖getDragTracker()方法:

  public DragTracker getDragTracker(Request request) {

  if (request instanceof SelectionRequest &&

  ((SelectionRequest) request).getLastButtonPressed() == 3)

  {

  return new DeselectAllTracker(this);

  }

  return new MarqueeDragTracker();

  }

  两个方法配合使用,否则无法达到目的。

  6、如何通过editpart修改editor保存状态(不通过setDirty()实现)

  由于editpart类是拿不到editor引用的,故想通过调用editor.setDirty()是不可能的。在我的项目中,拖动一个图元是可以触发修改标记,但是拖动连线后editor就不能自动设为修改状态。通过一番研究发现,可以在editpart类中增加如下方法来实现:

  public void commit() {

  getViewer().getEditDomain().getCommandStack().execute(new Command(){});

  }

Eclipse GEF常用技巧

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

See all articles