Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
Dylan.Liu | 5d9a0d5b58 | 4 years ago |
Dylan.Liu | 06df4d9861 | 4 years ago |
14 changed files with 73 additions and 475 deletions
@ -0,0 +1,33 @@ |
|||||||
|
package com.fanruan.api.cluster; |
||||||
|
|
||||||
|
import com.fr.collections.utils.FineLockUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* <code>Redis</code>实现的集群锁工具类. |
||||||
|
* |
||||||
|
* 需要在{@link com.fr.store.StateServiceActivator}启动后使用. |
||||||
|
* |
||||||
|
* @author Dylan.Liu |
||||||
|
* @version 10.0 |
||||||
|
* Created by Dylan.Liu on 2021/2/2 |
||||||
|
*/ |
||||||
|
public class FineLockKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 加锁. |
||||||
|
* |
||||||
|
* @param lockName 锁名 |
||||||
|
*/ |
||||||
|
public static void lockViaFineLock(String lockName) { |
||||||
|
FineLockUtils.lockViaFineLock(lockName); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 解锁. |
||||||
|
* |
||||||
|
* @param lockName 锁名 |
||||||
|
*/ |
||||||
|
public static void unlockViaFineLock(String lockName) { |
||||||
|
FineLockUtils.unlockViaFineLock(lockName); |
||||||
|
} |
||||||
|
} |
@ -1,23 +0,0 @@ |
|||||||
package com.fanruan.api.conf; |
|
||||||
|
|
||||||
import com.fr.config.MarketConfig; |
|
||||||
|
|
||||||
public class MarketConfigKit { |
|
||||||
/** |
|
||||||
* 获取服务器appId |
|
||||||
* |
|
||||||
* @return appId |
|
||||||
*/ |
|
||||||
public static String getAppId() { |
|
||||||
return MarketConfig.getInstance().getCloudOperationMaintenanceId(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取已登录帆软市场的用户名 |
|
||||||
* |
|
||||||
* @return userId |
|
||||||
*/ |
|
||||||
public static long getUserId() { |
|
||||||
return MarketConfig.getInstance().getBbsUid(); |
|
||||||
} |
|
||||||
} |
|
@ -1,55 +0,0 @@ |
|||||||
package com.fanruan.api.design.ui.component; |
|
||||||
|
|
||||||
import com.fr.design.editlock.EditLockChangeEvent; |
|
||||||
import com.fr.design.editlock.EditLockChangeListener; |
|
||||||
import com.fr.design.editlock.EditLockUtils; |
|
||||||
import com.fr.report.LockItem; |
|
||||||
|
|
||||||
import javax.swing.*; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Yvan |
|
||||||
* @version 10.0 |
|
||||||
* Created by Yvan on 2021/1/20 |
|
||||||
*/ |
|
||||||
public class UILockButton extends UIButton implements EditLockChangeListener { |
|
||||||
|
|
||||||
/** |
|
||||||
* 锁定状态图标 |
|
||||||
*/ |
|
||||||
private final Icon lockedIcon; |
|
||||||
/** |
|
||||||
* 正常状态图标 |
|
||||||
*/ |
|
||||||
private final Icon normalIcon; |
|
||||||
/** |
|
||||||
* 锁定状态的提示信息 |
|
||||||
*/ |
|
||||||
private final String lockedTooltips; |
|
||||||
/** |
|
||||||
* 正常状态的提示信息 |
|
||||||
*/ |
|
||||||
private final String normalTooltips; |
|
||||||
|
|
||||||
public UILockButton(Icon lockedIcon, Icon normalIcon, String lockedTooltips, String normalTooltips) { |
|
||||||
super(); |
|
||||||
this.lockedIcon = lockedIcon; |
|
||||||
this.normalIcon = normalIcon; |
|
||||||
this.lockedTooltips = lockedTooltips; |
|
||||||
this.normalTooltips = normalTooltips; |
|
||||||
init(); |
|
||||||
} |
|
||||||
|
|
||||||
private void init() { |
|
||||||
boolean locked = EditLockUtils.isLocked(LockItem.CONNECTION); |
|
||||||
this.setIcon(locked ? lockedIcon : normalIcon); |
|
||||||
this.setToolTipText(locked ? lockedTooltips : normalTooltips); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void updateLockedState(EditLockChangeEvent event) { |
|
||||||
this.setIcon(event.isLocked() ? lockedIcon : normalIcon); |
|
||||||
this.setToolTipText(event.isLocked() ? lockedTooltips : normalTooltips); |
|
||||||
this.repaint(); |
|
||||||
} |
|
||||||
} |
|
@ -1,50 +0,0 @@ |
|||||||
package com.fanruan.api.design.work.compat; |
|
||||||
|
|
||||||
import com.fanruan.api.design.ui.component.UIButton; |
|
||||||
import com.fanruan.api.design.ui.component.UILockButton; |
|
||||||
import com.fr.base.svg.IconUtils; |
|
||||||
import com.fr.design.editlock.ConnectionLockChangeChecker; |
|
||||||
import com.fr.design.editlock.EditLockUtils; |
|
||||||
import com.fr.report.LockItem; |
|
||||||
|
|
||||||
import java.awt.*; |
|
||||||
import java.awt.event.ActionListener; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author richie |
|
||||||
* @version 10.0 |
|
||||||
* Created by richie on 2021/3/18 |
|
||||||
* 用于兼容没有数据连接lock的版本 |
|
||||||
*/ |
|
||||||
public class ConnectionLockHelper { |
|
||||||
|
|
||||||
public static UIButton generateLockButton(Dimension buttonSize, ActionListener listener) { |
|
||||||
UILockButton editButton = new UILockButton( |
|
||||||
EditLockUtils.CONNECTION_LOCKED_ICON, |
|
||||||
IconUtils.readIcon("/com/fr/design/images/m_web/connection"), |
|
||||||
EditLockUtils.CONNECTION_LOCKED_TOOLTIPS, |
|
||||||
null |
|
||||||
); |
|
||||||
editButton.setPreferredSize(buttonSize); |
|
||||||
editButton.addActionListener(listener); |
|
||||||
ConnectionLockChangeChecker.getInstance().addEditLockChangeListener(editButton); |
|
||||||
return editButton; |
|
||||||
} |
|
||||||
|
|
||||||
public static boolean doLock(Component component) { |
|
||||||
// 尝试为数据连接加锁
|
|
||||||
boolean actionLock = EditLockUtils.lock(LockItem.CONNECTION); |
|
||||||
if (!actionLock) { |
|
||||||
// 锁定失败,代表已经被其他用户锁定,跳出弹窗提示
|
|
||||||
EditLockUtils.showLockMessage(component); |
|
||||||
return true; |
|
||||||
} |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
public static void unlock() { |
|
||||||
// 关闭定义数据连接页面,为其解锁
|
|
||||||
EditLockUtils.unlock(LockItem.CONNECTION); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,122 +0,0 @@ |
|||||||
package com.fanruan.api.design.work.component; |
|
||||||
|
|
||||||
import com.fanruan.api.design.ui.component.UIButton; |
|
||||||
import com.fanruan.api.design.ui.component.UIComboBox; |
|
||||||
import com.fanruan.api.util.IOKit; |
|
||||||
import com.fanruan.api.util.StringKit; |
|
||||||
|
|
||||||
import javax.swing.*; |
|
||||||
import java.awt.*; |
|
||||||
import java.awt.event.ActionEvent; |
|
||||||
import java.awt.event.ActionListener; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author richie |
|
||||||
* @version 10.0 |
|
||||||
* Created by richie on 2021/3/18 |
|
||||||
*/ |
|
||||||
public abstract class ItemEditableComboBoxPanel extends JPanel { |
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L; |
|
||||||
|
|
||||||
protected static final Object EMPTY = new Object() { |
|
||||||
public String toString() { |
|
||||||
return StringKit.EMPTY; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
protected UIComboBox<?> itemComboBox; |
|
||||||
protected UIButton editButton; |
|
||||||
protected UIButton refreshButton; |
|
||||||
|
|
||||||
public ItemEditableComboBoxPanel() { |
|
||||||
super(); |
|
||||||
|
|
||||||
initComponents(); |
|
||||||
} |
|
||||||
|
|
||||||
protected void initComponents() { |
|
||||||
this.setLayout(new BorderLayout(4, 4)); |
|
||||||
Dimension buttonSize = new Dimension(26, 20); |
|
||||||
itemComboBox = new UIComboBox<>(); |
|
||||||
itemComboBox.setEnabled(true); |
|
||||||
this.add(itemComboBox, BorderLayout.CENTER); |
|
||||||
refreshButton = new UIButton(IOKit.readIcon("/com/fr/design/images/control/refresh.png")); |
|
||||||
JPanel jPanel = new JPanel(new GridLayout(0, 2, 4, 4)); |
|
||||||
editButton = initEditButton(editButton, buttonSize); |
|
||||||
jPanel.add(editButton); |
|
||||||
jPanel.add(refreshButton); |
|
||||||
this.add(jPanel, BorderLayout.EAST); |
|
||||||
refreshButton.setPreferredSize(buttonSize); |
|
||||||
refreshButton.addActionListener(new ActionListener() { |
|
||||||
public void actionPerformed(ActionEvent e) { |
|
||||||
refreshItems(); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
protected UIButton initEditButton(UIButton editButton, Dimension buttonSize) { |
|
||||||
editButton = new UIButton(IOKit.readIcon("/com/fr/design/images/control/control-center2.png")); |
|
||||||
editButton.setPreferredSize(buttonSize); |
|
||||||
editButton.addActionListener(evt -> editItems()); |
|
||||||
return editButton; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* 给itemComboBox添加ActionListener |
|
||||||
*/ |
|
||||||
public void addComboBoxActionListener(ActionListener l) { |
|
||||||
itemComboBox.addActionListener(l); |
|
||||||
} |
|
||||||
|
|
||||||
protected void refreshItems() { |
|
||||||
// 记录原来选中的Item,重新加载后需要再次选中
|
|
||||||
Object lastSelectedItem = itemComboBox.getSelectedItem(); |
|
||||||
|
|
||||||
DefaultComboBoxModel<Object> model = ((DefaultComboBoxModel<Object>) itemComboBox.getModel()); |
|
||||||
model.removeAllElements(); |
|
||||||
|
|
||||||
// 先加EMPTY,再加items
|
|
||||||
model.addElement(EMPTY); |
|
||||||
|
|
||||||
java.util.Iterator<String> itemIt = items(); |
|
||||||
while (itemIt.hasNext()) { |
|
||||||
model.addElement(itemIt.next()); |
|
||||||
} |
|
||||||
|
|
||||||
// 再次选中之前选中的Item
|
|
||||||
int idx = model.getIndexOf(lastSelectedItem); |
|
||||||
if (idx < 0) { |
|
||||||
idx = 0; |
|
||||||
} |
|
||||||
itemComboBox.setSelectedIndex(idx); |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
* 得到其中的itemComboBox所选中的Item |
|
||||||
*/ |
|
||||||
public String getSelectedItem() { |
|
||||||
Object selected = itemComboBox.getSelectedItem(); |
|
||||||
|
|
||||||
return selected instanceof String ? (String) selected : null; |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
* 选中name项 |
|
||||||
*/ |
|
||||||
public void setSelectedItem(String name) { |
|
||||||
DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel()); |
|
||||||
model.setSelectedItem(name); |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
* 刷新ComboBox.items |
|
||||||
*/ |
|
||||||
protected abstract java.util.Iterator<String> items(); |
|
||||||
|
|
||||||
/* |
|
||||||
* 弹出对话框编辑Items |
|
||||||
*/ |
|
||||||
protected abstract void editItems(); |
|
||||||
} |
|
Loading…
Reference in new issue