From 4abace6d53aa2a50138f44b20351cc4cb68b33bc Mon Sep 17 00:00:00 2001 From: zhouping Date: Fri, 17 Feb 2017 14:17:25 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-1814=20=E8=A1=A8=E5=8D=95tab=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E6=94=B9=E8=89=AFbug=20=E4=BB=A3=E7=A0=81=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=EF=BC=8C=E6=8A=BD=E5=87=BA=E7=88=B6=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../creator/cardlayout/TabMoveAction.java | 80 +++++++++++++++++++ .../cardlayout/TabMoveCustomAction.java | 23 +----- .../creator/cardlayout/TabMoveEndAction.java | 64 ++++----------- .../cardlayout/TabMoveFirstAction.java | 61 ++++---------- .../creator/cardlayout/TabMoveNextAction.java | 60 ++++---------- .../creator/cardlayout/TabMovePrevAction.java | 60 ++++---------- 6 files changed, 143 insertions(+), 205 deletions(-) create mode 100644 designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java new file mode 100644 index 0000000000..354846d91a --- /dev/null +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java @@ -0,0 +1,80 @@ +package com.fr.design.designer.creator.cardlayout; + +import com.fr.design.designer.beans.actions.FormUndoableAction; +import com.fr.design.mainframe.FormDesigner; +import com.fr.form.ui.CardSwitchButton; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; +import com.fr.general.FRLogger; + +/** + * Created by zhouping on 2017/2/17. + */ +public class TabMoveAction extends FormUndoableAction { + private XCardSwitchButton xCardSwitchButton; + + public TabMoveAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { + super(t); + this.xCardSwitchButton = xCardSwitchButton; + } + + @Override + public boolean executeActionReturnUndoRecordNeeded() { + XCardSwitchButton xCardSwitchButton = getxCardSwitchButton(); + XWCardTagLayout xwCardTagLayout = xCardSwitchButton.getTagLayout(); + XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); + CardSwitchButton currentButton = (CardSwitchButton) xCardSwitchButton.toData(); + try { + int currentIndex = currentButton.getIndex(); + int maxIndex = xwCardTagLayout.getComponentCount(); + XWTabFitLayout xCurrentTab = (XWTabFitLayout) xwCardLayout.getXCreator(currentIndex); + WTabFitLayout currentTab = (WTabFitLayout) xCurrentTab.toData(); + xwCardTagLayout.setSwitchingTab(true); + + changeTabIndex(xwCardTagLayout, xwCardLayout, currentIndex, maxIndex); + + moveTabAction(xwCardTagLayout, currentButton, xCurrentTab, currentTab); + + xwCardTagLayout.setSwitchingTab(false); + }catch (Exception e){ + xwCardTagLayout.setSwitchingTab(false); + FRLogger.getLogger().error(e.getMessage()); + return false; + } + return true; + } + + private void moveTabAction(XWCardTagLayout xwCardTagLayout, CardSwitchButton currentButton, XWTabFitLayout xCurrentTab, WTabFitLayout currentTab) { + int move2Index = getTabMoveIndex(currentButton); + XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); + xwCardTagLayout.remove(xCardSwitchButton); + xwCardTagLayout.add(xCardSwitchButton, move2Index); + xwCardLayout.remove(xCurrentTab); + xwCardLayout.add(xCurrentTab, move2Index); + currentButton.setIndex(move2Index); + currentTab.setIndex(move2Index); + currentTab.setTabNameIndex(move2Index); + xwCardLayout.toData().setShowIndex(move2Index); + xwCardLayout.showCard(); + } + + //改变Tab的索引号 + protected void changeTabIndex(XWCardTagLayout xwCardTagLayout, XWCardLayout xwCardLayout, int currentIndex, int maxIndex) { + } + + /** + * 获取tab移动的目的索引:首位,末尾,下一个,上一个 + * @param currentButton 当前按钮 + * @return 索引 + */ + protected int getTabMoveIndex(CardSwitchButton currentButton) { + return currentButton.getIndex(); + } + + public XCardSwitchButton getxCardSwitchButton() { + return xCardSwitchButton; + } + + public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { + this.xCardSwitchButton = xCardSwitchButton; + } +} diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java index 93a62287e0..8930c686c4 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java @@ -1,32 +1,17 @@ package com.fr.design.designer.creator.cardlayout; -import com.fr.base.BaseUtils; -import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; +import com.fr.general.IOUtils; /** * Created by zhouping on 2017/2/9. */ -public class TabMoveCustomAction extends FormUndoableAction { - private XCardSwitchButton xCardSwitchButton; +public class TabMoveCustomAction extends TabMoveAction { public TabMoveCustomAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { - super(t); + super(t, xCardSwitchButton); this.setName(""); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/refresh.png")); - this.xCardSwitchButton = xCardSwitchButton; + this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/control/refresh.png")); } - @Override - public boolean executeActionReturnUndoRecordNeeded() { - return false; - } - - public XCardSwitchButton getxCardSwitchButton() { - return xCardSwitchButton; - } - - public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { - this.xCardSwitchButton = xCardSwitchButton; - } } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java index b2a5214c48..5da5dd1c73 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveEndAction.java @@ -1,68 +1,36 @@ package com.fr.design.designer.creator.cardlayout; -import com.fr.base.BaseUtils; -import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.FRLogger; +import com.fr.general.IOUtils; import com.fr.general.Inter; /** * Created by zhouping on 2017/2/9. */ -public class TabMoveEndAction extends FormUndoableAction { - private XCardSwitchButton xCardSwitchButton; +public class TabMoveEndAction extends TabMoveAction { public TabMoveEndAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { - super(t); + super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_End")); - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/control/rightright.png")); - this.xCardSwitchButton = xCardSwitchButton; + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/rightright.png")); } - @Override - public boolean executeActionReturnUndoRecordNeeded() { - XWCardTagLayout xwCardTagLayout = xCardSwitchButton.getTagLayout(); - XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); - CardSwitchButton currentButton = (CardSwitchButton) xCardSwitchButton.toData(); - try { - int currentIndex = currentButton.getIndex(); - int maxIndex = xwCardTagLayout.getComponentCount(); - XWTabFitLayout xCurrentTab = (XWTabFitLayout) xwCardLayout.getXCreator(currentIndex); - WTabFitLayout currentTab = (WTabFitLayout) xCurrentTab.toData(); - xwCardTagLayout.setSwitchingTab(true); - //修改当前tab往后所有tab的索引号 - for (int i = currentIndex + 1; i < maxIndex; i++) { - CardSwitchButton tempBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(i).toData(); - tempBtn.setIndex(i - 1); - WTabFitLayout tempTab = (WTabFitLayout) xwCardLayout.getXCreator(i).toData(); - tempTab.setIndex(i - 1); - tempTab.setTabNameIndex(i - 1); - } - xwCardTagLayout.remove(xCardSwitchButton); - xwCardTagLayout.add(xCardSwitchButton); - xwCardLayout.remove(xCurrentTab); - xwCardLayout.add(xCurrentTab); - currentButton.setIndex(maxIndex - 1); - currentTab.setIndex(maxIndex - 1); - currentTab.setTabNameIndex(maxIndex - 1); - xwCardLayout.toData().setShowIndex(maxIndex - 1); - xwCardLayout.showCard(); - xwCardTagLayout.setSwitchingTab(false); - }catch (Exception e){ - xwCardTagLayout.setSwitchingTab(false); - FRLogger.getLogger().error(e.getMessage()); - return false; + //改变Tab的索引号 + protected void changeTabIndex(XWCardTagLayout xwCardTagLayout, XWCardLayout xwCardLayout, int currentIndex, int maxIndex) { + //修改当前tab往后所有tab的索引号 + for (int i = currentIndex + 1; i < maxIndex; i++) { + CardSwitchButton tempBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(i).toData(); + tempBtn.setIndex(i - 1); + WTabFitLayout tempTab = (WTabFitLayout) xwCardLayout.getXCreator(i).toData(); + tempTab.setIndex(i - 1); + tempTab.setTabNameIndex(i - 1); } - return true; - } - - public XCardSwitchButton getxCardSwitchButton() { - return xCardSwitchButton; } - public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { - this.xCardSwitchButton = xCardSwitchButton; + @Override + protected int getTabMoveIndex(CardSwitchButton btn) { + return getxCardSwitchButton().getTagLayout().getComponentCount() - 1; } } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java index c9034d04b5..26195b9462 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveFirstAction.java @@ -1,67 +1,36 @@ package com.fr.design.designer.creator.cardlayout; -import com.fr.base.BaseUtils; -import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.FRLogger; +import com.fr.general.IOUtils; import com.fr.general.Inter; /** * Created by zhouping on 2017/2/9. */ -public class TabMoveFirstAction extends FormUndoableAction { - private XCardSwitchButton xCardSwitchButton; +public class TabMoveFirstAction extends TabMoveAction { public TabMoveFirstAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { - super(t); + super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_First")); - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/control/leftleft.png")); - this.xCardSwitchButton = xCardSwitchButton; + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/leftleft.png")); } @Override - public boolean executeActionReturnUndoRecordNeeded() { - XWCardTagLayout xwCardTagLayout = xCardSwitchButton.getTagLayout(); - XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); - CardSwitchButton currentButton = (CardSwitchButton) xCardSwitchButton.toData(); - try { - int currentIndex = currentButton.getIndex(); - XWTabFitLayout xCurrentTab = (XWTabFitLayout) xwCardLayout.getXCreator(currentIndex); - WTabFitLayout currentTab = (WTabFitLayout) xCurrentTab.toData(); - xwCardTagLayout.setSwitchingTab(true); - //修改当前tab往前所有tab的索引号 - for (int i = currentIndex - 1; i >= 0; i--) { - CardSwitchButton tempBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(i).toData(); - tempBtn.setIndex(i + 1); - WTabFitLayout tempTab = (WTabFitLayout) xwCardLayout.getXCreator(i).toData(); - tempTab.setIndex(i + 1); - tempTab.setTabNameIndex(i + 1); - } - xwCardTagLayout.remove(xCardSwitchButton); - xwCardTagLayout.add(xCardSwitchButton, 0); - xwCardLayout.remove(xCurrentTab); - xwCardLayout.add(xCurrentTab, 0); - currentButton.setIndex(0); - currentTab.setIndex(0); - currentTab.setTabNameIndex(0); - xwCardLayout.toData().setShowIndex(0); - xwCardLayout.showCard(); - xwCardTagLayout.setSwitchingTab(false); - }catch (Exception e){ - xwCardTagLayout.setSwitchingTab(false); - FRLogger.getLogger().error(e.getMessage()); - return false; + protected void changeTabIndex(XWCardTagLayout xwCardTagLayout, XWCardLayout xwCardLayout, int currentIndex, int maxIndex) { + //修改当前tab往前所有tab的索引号 + for (int i = currentIndex - 1; i >= 0; i--) { + CardSwitchButton tempBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(i).toData(); + tempBtn.setIndex(i + 1); + WTabFitLayout tempTab = (WTabFitLayout) xwCardLayout.getXCreator(i).toData(); + tempTab.setIndex(i + 1); + tempTab.setTabNameIndex(i + 1); } - return true; } - public XCardSwitchButton getxCardSwitchButton() { - return xCardSwitchButton; - } - - public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { - this.xCardSwitchButton = xCardSwitchButton; + @Override + protected int getTabMoveIndex(CardSwitchButton btn) { + return 0; } } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java index e7806a7ae0..10e796abc9 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java @@ -1,66 +1,34 @@ package com.fr.design.designer.creator.cardlayout; -import com.fr.base.BaseUtils; -import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.FRLogger; +import com.fr.general.IOUtils; import com.fr.general.Inter; /** * Created by zhouping on 2017/2/9. */ -public class TabMoveNextAction extends FormUndoableAction { - private XCardSwitchButton xCardSwitchButton; +public class TabMoveNextAction extends TabMoveAction { public TabMoveNextAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { - super(t); + super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_Next")); - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/control/right.png")); - this.xCardSwitchButton = xCardSwitchButton; + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/right.png")); } @Override - public boolean executeActionReturnUndoRecordNeeded() { - XWCardTagLayout xwCardTagLayout = xCardSwitchButton.getTagLayout(); - XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); - CardSwitchButton currentButton = (CardSwitchButton) xCardSwitchButton.toData(); - try { - int currentIndex = currentButton.getIndex(); - XWTabFitLayout xCurrentTab = (XWTabFitLayout) xwCardLayout.getXCreator(currentIndex); - WTabFitLayout currentTab = (WTabFitLayout) xCurrentTab.toData(); - xwCardTagLayout.setSwitchingTab(true); - //修改下一个tab的索引号 - CardSwitchButton nextBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(currentIndex + 1).toData(); - nextBtn.setIndex(currentIndex); - WTabFitLayout nextTab = (WTabFitLayout) xwCardLayout.getXCreator(currentIndex + 1).toData(); - nextTab.setIndex(currentIndex); - nextTab.setTabNameIndex(currentIndex); - - xwCardTagLayout.remove(xCardSwitchButton); - xwCardTagLayout.add(xCardSwitchButton, currentIndex + 1); - xwCardLayout.remove(xCurrentTab); - xwCardLayout.add(xCurrentTab, currentIndex + 1); - currentButton.setIndex(currentIndex + 1); - currentTab.setIndex(currentIndex + 1); - currentTab.setTabNameIndex(currentIndex + 1); - xwCardLayout.toData().setShowIndex(currentIndex + 1); - xwCardLayout.showCard(); - xwCardTagLayout.setSwitchingTab(false); - }catch (Exception e){ - xwCardTagLayout.setSwitchingTab(false); - FRLogger.getLogger().error(e.getMessage()); - return false; - } - return true; - } - - public XCardSwitchButton getxCardSwitchButton() { - return xCardSwitchButton; + protected void changeTabIndex(XWCardTagLayout xwCardTagLayout, XWCardLayout xwCardLayout, int currentIndex, int maxIndex) { + //修改下一个tab的索引号 + CardSwitchButton nextBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(currentIndex + 1).toData(); + nextBtn.setIndex(currentIndex); + WTabFitLayout nextTab = (WTabFitLayout) xwCardLayout.getXCreator(currentIndex + 1).toData(); + nextTab.setIndex(currentIndex); + nextTab.setTabNameIndex(currentIndex); } - public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { - this.xCardSwitchButton = xCardSwitchButton; + @Override + protected int getTabMoveIndex(CardSwitchButton currentButton) { + return currentButton.getIndex() + 1; } } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java index e92852c6c9..859a27eea2 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMovePrevAction.java @@ -1,66 +1,34 @@ package com.fr.design.designer.creator.cardlayout; -import com.fr.base.BaseUtils; -import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.FRLogger; +import com.fr.general.IOUtils; import com.fr.general.Inter; /** * Created by zhouping on 2017/2/9. */ -public class TabMovePrevAction extends FormUndoableAction { - private XCardSwitchButton xCardSwitchButton; +public class TabMovePrevAction extends TabMoveAction { public TabMovePrevAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { - super(t); + super(t, xCardSwitchButton); this.setName(Inter.getLocText("FR-Designer-Move_Tab_Prev")); - this.setSmallIcon(BaseUtils.readIcon("com/fr/design/images/control/left.png")); - this.xCardSwitchButton = xCardSwitchButton; + this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/left.png")); } @Override - public boolean executeActionReturnUndoRecordNeeded() { - XWCardTagLayout xwCardTagLayout = xCardSwitchButton.getTagLayout(); - XWCardLayout xwCardLayout = xCardSwitchButton.getCardLayout(); - CardSwitchButton currentButton = (CardSwitchButton) xCardSwitchButton.toData(); - try { - int currentIndex = currentButton.getIndex(); - XWTabFitLayout xCurrentTab = (XWTabFitLayout) xwCardLayout.getXCreator(currentIndex); - WTabFitLayout currentTab = (WTabFitLayout) xCurrentTab.toData(); - xwCardTagLayout.setSwitchingTab(true); - //修改上一个tab的索引号 - CardSwitchButton prevBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(currentIndex - 1).toData(); - prevBtn.setIndex(currentIndex); - WTabFitLayout prevTab = (WTabFitLayout) xwCardLayout.getXCreator(currentIndex - 1).toData(); - prevTab.setIndex(currentIndex); - prevTab.setTabNameIndex(currentIndex); - - xwCardTagLayout.remove(xCardSwitchButton); - xwCardTagLayout.add(xCardSwitchButton, currentIndex - 1); - xwCardLayout.remove(xCurrentTab); - xwCardLayout.add(xCurrentTab, currentIndex - 1); - currentButton.setIndex(currentIndex - 1); - currentTab.setIndex(currentIndex - 1); - currentTab.setTabNameIndex(currentIndex - 1); - xwCardLayout.toData().setShowIndex(currentIndex - 1); - xwCardLayout.showCard(); - xwCardTagLayout.setSwitchingTab(false); - }catch (Exception e){ - xwCardTagLayout.setSwitchingTab(false); - FRLogger.getLogger().error(e.getMessage()); - return false; - } - return true; - } - - public XCardSwitchButton getxCardSwitchButton() { - return xCardSwitchButton; + protected void changeTabIndex(XWCardTagLayout xwCardTagLayout, XWCardLayout xwCardLayout, int currentIndex, int maxIndex) { + //修改上一个tab的索引号 + CardSwitchButton prevBtn = (CardSwitchButton) xwCardTagLayout.getXCreator(currentIndex - 1).toData(); + prevBtn.setIndex(currentIndex); + WTabFitLayout prevTab = (WTabFitLayout) xwCardLayout.getXCreator(currentIndex - 1).toData(); + prevTab.setIndex(currentIndex); + prevTab.setTabNameIndex(currentIndex); } - public void setxCardSwitchButton(XCardSwitchButton xCardSwitchButton) { - this.xCardSwitchButton = xCardSwitchButton; + @Override + protected int getTabMoveIndex(CardSwitchButton currentButton) { + return currentButton.getIndex() - 1; } }