|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.fr.design.mainframe.share.ui.block; |
|
|
|
|
|
|
|
|
|
import com.fr.base.FRContext; |
|
|
|
|
import com.fr.base.GraphHelper; |
|
|
|
|
import com.fr.base.iofile.attr.SharableAttrMark; |
|
|
|
|
import com.fr.design.actions.UpdateAction; |
|
|
|
@ -37,17 +38,24 @@ import org.jetbrains.annotations.Nullable;
|
|
|
|
|
|
|
|
|
|
import javax.swing.Action; |
|
|
|
|
import javax.swing.Icon; |
|
|
|
|
import javax.swing.JOptionPane; |
|
|
|
|
import javax.swing.JPanel; |
|
|
|
|
import javax.swing.UIManager; |
|
|
|
|
import java.awt.BorderLayout; |
|
|
|
|
import java.awt.Color; |
|
|
|
|
import java.awt.Cursor; |
|
|
|
|
import java.awt.Dimension; |
|
|
|
|
import java.awt.Font; |
|
|
|
|
import java.awt.Graphics; |
|
|
|
|
import java.awt.Graphics2D; |
|
|
|
|
import java.awt.Image; |
|
|
|
|
import java.awt.Rectangle; |
|
|
|
|
import java.awt.RenderingHints; |
|
|
|
|
import java.awt.dnd.DnDConstants; |
|
|
|
|
import java.awt.event.ActionEvent; |
|
|
|
|
import java.awt.event.MouseEvent; |
|
|
|
|
import java.awt.font.FontRenderContext; |
|
|
|
|
import java.awt.font.LineMetrics; |
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -67,6 +75,7 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
|
|
|
|
|
private boolean hover; |
|
|
|
|
private final Icon markedMode = IOUtils.readIcon("/com/fr/base/images/share/marked.png"); |
|
|
|
|
private final Icon unMarkedMode = IOUtils.readIcon("/com/fr/base/images/share/unmarked.png"); |
|
|
|
|
private final Icon incompatibleMarker = IOUtils.readIcon("/com/fr/base/images/share/marker_incompatible.png"); |
|
|
|
|
|
|
|
|
|
public LocalWidgetBlock(DefaultSharableWidget provider, LocalWidgetSelectPane parentPane) { |
|
|
|
|
super(provider); |
|
|
|
@ -198,11 +207,24 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
|
|
|
|
|
Widget creatorSource; |
|
|
|
|
String shareId; |
|
|
|
|
if (source instanceof LocalWidgetBlock) { |
|
|
|
|
LocalWidgetBlock no = (LocalWidgetBlock) e.getSource(); |
|
|
|
|
if (no == null) { |
|
|
|
|
LocalWidgetBlock widgetBlock = (LocalWidgetBlock) e.getSource(); |
|
|
|
|
if (widgetBlock == null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
shareId = no.getBindInfo().getId(); |
|
|
|
|
SharableWidgetProvider widget = widgetBlock.getWidget(); |
|
|
|
|
if (widget == null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (!widget.isCompatibleWithCurrentEnv()) { |
|
|
|
|
FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), |
|
|
|
|
Toolkit.i18nText("Fine-Design_Share_Drag_And_Make_Incompatible_Component_Tip"), |
|
|
|
|
Toolkit.i18nText("Fine-Design_Basic_Error"), |
|
|
|
|
JOptionPane.ERROR_MESSAGE, |
|
|
|
|
UIManager.getIcon("OptionPane.errorIcon") |
|
|
|
|
); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
shareId = widgetBlock.getBindInfo().getId(); |
|
|
|
|
creatorSource = getGroup().getElCaseEditorById(shareId); |
|
|
|
|
if (creatorSource == null) { |
|
|
|
|
ShareUIUtils.showErrorMessageDialog(Toolkit.i18nText("Fine-Design_Share_Drag_Error_Info")); |
|
|
|
@ -211,7 +233,7 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
|
|
|
|
|
creatorSource.setWidgetID(UUID.randomUUID().toString()); |
|
|
|
|
((AbstractBorderStyleWidget) creatorSource).addWidgetAttrMark(new SharableAttrMark(true)); |
|
|
|
|
//tab布局WCardMainBorderLayout通过反射出来的大小是960*480
|
|
|
|
|
XCreator xCreator = ShareComponentUtils.createXCreator(creatorSource, shareId, no.getBindInfo()); |
|
|
|
|
XCreator xCreator = ShareComponentUtils.createXCreator(creatorSource, shareId, widgetBlock.getBindInfo()); |
|
|
|
|
WidgetToolBarPane.getTarget().startDraggingBean(xCreator); |
|
|
|
|
lastPressEvent = null; |
|
|
|
|
this.setBorder(null); |
|
|
|
@ -221,6 +243,13 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
|
|
|
|
|
@Override |
|
|
|
|
public void paint(Graphics g) { |
|
|
|
|
super.paint(g); |
|
|
|
|
Graphics2D g2d = (Graphics2D) g; |
|
|
|
|
|
|
|
|
|
boolean isUnusable = !getWidget().isCompatibleWithCurrentEnv(); |
|
|
|
|
if (isUnusable) { |
|
|
|
|
paintUnusableMask(g2d); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//绘制删除标志
|
|
|
|
|
if (isEdit) { |
|
|
|
|
Icon icon = isMarked ? markedMode : unMarkedMode; |
|
|
|
@ -235,6 +264,42 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected void paintUnusableMask(Graphics2D g2d) { |
|
|
|
|
Color oldColor = g2d.getColor(); |
|
|
|
|
Font oldFont = g2d.getFont(); |
|
|
|
|
|
|
|
|
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
|
|
|
|
|
|
|
|
|
Dimension coverDim = getCoverDimension(); |
|
|
|
|
double canvasX = 0; |
|
|
|
|
double canvasY = 0; |
|
|
|
|
double canvasW = coverDim.getWidth(); |
|
|
|
|
double canvasH = coverDim.getHeight(); |
|
|
|
|
|
|
|
|
|
g2d.setColor(new Color(0.0F, 0.0F, 0.0F, 0.4F)); |
|
|
|
|
GraphHelper.fillRect(g2d, canvasX, canvasY, canvasW, canvasH); |
|
|
|
|
|
|
|
|
|
g2d.setColor(new Color(0.0F, 0.0F, 0.0F, 0.5F)); |
|
|
|
|
GraphHelper.fillRect(g2d, canvasX, canvasH - 16, canvasW, 16); |
|
|
|
|
|
|
|
|
|
String tipText = Toolkit.i18nText("Fine-Design_Share_Incompatible_Version_Tip"); |
|
|
|
|
Font tipFont = FRContext.getDefaultValues().getFRFont().deriveFont(8.0F); |
|
|
|
|
FontRenderContext frc = g2d.getFontRenderContext(); |
|
|
|
|
double tipTextWidth = GraphHelper.stringWidth(tipText, tipFont, frc); |
|
|
|
|
LineMetrics metrics = tipFont.getLineMetrics(tipText, frc); |
|
|
|
|
double tipTextHeight = metrics.getHeight(); |
|
|
|
|
g2d.setColor(Color.WHITE); |
|
|
|
|
g2d.setFont(tipFont); |
|
|
|
|
GraphHelper.drawString(g2d, tipText, canvasX + (canvasW - tipTextWidth) / 2.0F, canvasY + canvasH - (16 - tipTextHeight) / 2.0F); |
|
|
|
|
|
|
|
|
|
int markerX = (int) (canvasX + (canvasW - incompatibleMarker.getIconWidth()) / 2); |
|
|
|
|
int markerY = (int) (canvasY + (canvasH - incompatibleMarker.getIconHeight()) / 2); |
|
|
|
|
incompatibleMarker.paintIcon(this, g2d, markerX, markerY); |
|
|
|
|
|
|
|
|
|
g2d.setColor(oldColor); |
|
|
|
|
g2d.setFont(oldFont); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 由鼠标释放时调用该方法来触发左键点击事件 |
|
|
|
|
*/ |
|
|
|
|