Browse Source

menuhandler的equals方法会使带参数的shortcut不进行比较,改用AbstractProvider

master
vito 8 years ago
parent
commit
187dc6340b
  1. 7
      designer_base/src/com/fr/design/fun/MenuHandler.java
  2. 27
      designer_base/src/com/fr/design/fun/impl/AbstractMenuHandler.java

7
designer_base/src/com/fr/design/fun/MenuHandler.java

@ -66,11 +66,4 @@ public interface MenuHandler extends Level{
* @return 菜单项内容
*/
ShortCut shortcut(ToolBarMenuDockPlus plus);
/**
* 两个菜单项相等等情况
* @param obj 比较对象
* @return 相等则返回true否则返回false
*/
boolean equals(Object obj);
}

27
designer_base/src/com/fr/design/fun/impl/AbstractMenuHandler.java

@ -3,39 +3,22 @@ package com.fr.design.fun.impl;
import com.fr.design.fun.MenuHandler;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.ShortCut;
import com.fr.general.ComparatorUtils;
import com.fr.stable.fun.impl.AbstractProvider;
/**
* @author richie
* @date 2015-05-13
* @since 8.0
*/
public abstract class AbstractMenuHandler implements MenuHandler {
public abstract class AbstractMenuHandler extends AbstractProvider implements MenuHandler {
public int currentAPILevel() {
return CURRENT_LEVEL;
}
public boolean equals(Object obj) {
return obj instanceof AbstractMenuHandler
&& ComparatorUtils.equals(category(), ((AbstractMenuHandler) obj).category())
&& shortCutEquals(this, (AbstractMenuHandler)obj);
}
private boolean shortCutEquals(AbstractMenuHandler target, AbstractMenuHandler self){
ShortCut targetShortCut = target.shortcut();
ShortCut selfShortCut = self.shortcut();
if (targetShortCut == null && selfShortCut == null){
return true;
}
if (targetShortCut != null && selfShortCut != null){
return ComparatorUtils.equals(targetShortCut.getClass(), selfShortCut.getClass());
}
return false;
@Override
public String mark4Provider() {
return this.getClass().getName();
}
/**

Loading…
Cancel
Save