Browse Source

摄像机配置

platform-api
4670101279 2 years ago
parent
commit
e577cc2c48
  1. 234
      ruoyi-code/src/main/java/sdk/java/common/GlobalTool.java
  2. 15
      ruoyi-code/src/main/java/sdk/java/common/JControlStyleFinal.java
  3. 381
      ruoyi-code/src/main/java/sdk/java/common/JDateChooser.java

234
ruoyi-code/src/main/java/sdk/java/common/GlobalTool.java

@ -0,0 +1,234 @@
package sdk.java.common;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.filechooser.FileNameExtensionFilter;
import com.sun.jna.Platform;
public class GlobalTool
{
public static void createDirectory(String strDirPath)
{
File file = new File(strDirPath);
if(!file.exists())
{
try {
Thread.sleep(25);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
file.mkdir();
}
else
{
delDirectory(strDirPath);
createDirectory(strDirPath);
}
}
public static void delDirectory(String strDirPath)
{
// 先删除文件夹中的文件
delFiles(strDirPath);
// 删除空文件夹
File file = new File(strDirPath);
file.delete();
}
public static void delFiles(String strPath)
{
File file = new File(strPath);
if(file.exists() && file.isDirectory())
{
String[] tmpList = file.list();
File tmpFile = null;
String strTmpSubPath = null;
for(int i=0; i<tmpList.length; i++)
{
if(strPath.endsWith(File.separator))
{
strTmpSubPath = strPath + tmpList[i];
tmpFile = new File(strPath + tmpList[i]);
}
else
{
strTmpSubPath = strPath + File.separator + tmpList[i];
tmpFile = new File(strPath + File.separator + tmpList[i]);
}
if(tmpFile.isFile())
{
tmpFile.delete();
}
else if(tmpFile.isDirectory())
{
// 先删除文件夹中的文件
delFiles(strTmpSubPath);
// 删除空文件
delDirectory(strTmpSubPath);
}
}
}
}
public static String fileChooser(String strChooserTitle, String strExtName, String strExtFilter)
{
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter(strExtName, strExtFilter);
jfc.setFileFilter(filter);
jfc.showDialog(new JLabel(), strChooserTitle);
File file = jfc.getSelectedFile();
String strFilePath = "";
if(null != file && file.isFile())
{
strFilePath = file.getAbsolutePath();
}
return strFilePath;
}
public static String folderChooser(String strChooserTitle)
{
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.showDialog(new JLabel(), strChooserTitle);
File folder = jfc.getSelectedFile();
String strFloderPath = "";
if(null != folder && folder.isDirectory())
{
strFloderPath = folder.getAbsolutePath();
}
return strFloderPath;
}
public static Date convertStringToDate(String strTime, String strFormat)
{
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
try {
date = sdf.parse(strTime);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String getEncodeType()
{
String strEncodeType = "";
int nPlatform = Platform.getOSType();
if(Platform.WINDOWS == nPlatform)
{
strEncodeType = "GBK";
}
else if(Platform.LINUX == nPlatform)
{
strEncodeType = "UTF-8";
}
return strEncodeType;
}
//////////////////////////////////////////////////////////////////////////////////////
// 定时器回调通知
public static interface TimeTickerCallback {
void funcCb(long lTotalTime, long lTimeUsed, boolean bStop, Object userData);
}
// 定时器
public static class TimeTicker extends Thread
{
// 需计时多久, ms
private long m_lTotalTime = 0;
// 开始计时, ms
private long m_lStartTick = 0;
// 当前用时, ms
private long m_lTickDelta = 0;
// 停止标记
private boolean m_bStop = true;
// 回调
private TimeTickerCallback m_func;
private Object m_userData;
// 运行间隔
private int m_tickInterval = 50;
/********************************************************************************
[in] nInterval 回调通知间隔
[in] nInterval 回调通知间隔
[in] lTotal 计时总时长0表示不停止
[in] func 计时回调通知函数
[in] userData 用户自定义参数
*********************************************************************************/
public TimeTicker(int nInterval, long lTotal, TimeTickerCallback func, Object userData)
{
m_tickInterval = nInterval;
m_lTotalTime = lTotal;
m_func = func;
m_userData = userData;
}
@Override
public void run()
{
while(!m_bStop)
{
long lCurTick = getTimeTick();
m_lTickDelta = lCurTick - m_lStartTick;
if(0 < m_lTotalTime && m_lTickDelta >= m_lTotalTime)
{
// 停止
m_bStop = true;
}
m_func.funcCb(m_lTotalTime, m_lTickDelta, m_bStop, m_userData);
if(m_bStop)
{
break;
}
try {
Thread.sleep(m_tickInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void startTicking()
{
m_lStartTick = getTimeTick();
m_bStop = false;
this.start();
}
public void stopTicking()
{
m_bStop = true;
}
private long getTimeTick()
{
return System.currentTimeMillis();
}
}
//////////////////////////////////////////////////////////////////////////////////////
}

15
ruoyi-code/src/main/java/sdk/java/common/JControlStyleFinal.java

@ -0,0 +1,15 @@
package sdk.java.common;
public class JControlStyleFinal {
public static final int CONTROL_STYLE_YYMM = 0;
public static final int CONTROL_STYLE_YYMMHH = 1;
public static final int CONTROL_STYLE_YYMMHHDD = 2;
public static final String FORMAT_STYLE_YYYYMMDD = "yyyy-MM-dd";
public static final String FORMAT_STYLE_YYYYMMDDHH = "yyyy-MM-dd hh";
public static final String FORMAT_STYLE_YYYYMMDDHHMI = "yyyy-MM-dd hh:mm";
public static final String FORMAT_STYLE_YYYYMMDDHHMISS = "yyyy-MM-dd hh:mm:ss";
public JControlStyleFinal() {
}
}

381
ruoyi-code/src/main/java/sdk/java/common/JDateChooser.java

@ -0,0 +1,381 @@
package sdk.java.common;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.io.Serializable;
public class JDateChooser extends JPanel implements ActionListener, ChangeListener, Serializable {
private static final long serialVersionUID = 1L;
private int width = 300;
private int height = 200;
private Color backGroundColor = Color.gray;
private Color palletTableColor = Color.white;
private Color todayBackColor = Color.GREEN;
private Color weekFontColor = Color.blue;
private Color dateFontColor = Color.black;
private Color weekendFontColor = Color.red;
private Color controlLineColor = Color.LIGHT_GRAY;
private Color controlTextColor = Color.black;
private JDialog dialog;
private JSpinner yearSpin;
private JSpinner monthSpin;
private JSpinner hourSpin;
private JSpinner minuteSpin;
private JButton[][] daysButton = new JButton[6][7];
private JFormattedTextField jFormattedTextField;
private Calendar c = getCalendar();
private String format = "yyyy-MM-dd";
private String JDialogName = "";
private int startYear = 1900;
private int lastYear = 2900;
public JDateChooser(JFormattedTextField jftf, int controlStyle)
{
jFormattedTextField = jftf;
setLayout(new BorderLayout());
setBorder(new LineBorder(backGroundColor, 2));
setBackground(backGroundColor);
JPanel topYearAndMonth = initYearAndMonthPanal(controlStyle);
add(topYearAndMonth, BorderLayout.NORTH);
JPanel centerWeekAndDay = initWeekAndDayPanal();
add(centerWeekAndDay, BorderLayout.CENTER);
}
private JPanel initYearAndMonthPanal(int controlStyle) {
int currentYear = c.get(Calendar.YEAR);
int currentMonth = c.get(Calendar.MONTH) + 1;
int currentHour = c.get(Calendar.HOUR_OF_DAY);
int currentMinute = c.get(Calendar.MINUTE);
JPanel result = new JPanel();
result.setLayout(new FlowLayout());
result.setBackground(controlLineColor);
yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, this.getStartYear(), this.getLastYear(), 1));
yearSpin.setPreferredSize(new Dimension(48, 20));
yearSpin.setName("Year");
yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
yearSpin.addChangeListener(this);
result.add(yearSpin);
JLabel yearLabel = new JLabel("年");
yearLabel.setForeground(controlTextColor);
result.add(yearLabel);
monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1));
monthSpin.setPreferredSize(new Dimension(35, 20));
monthSpin.setName("Month");
monthSpin.addChangeListener(this);
result.add(monthSpin);
JLabel monthLabel = new JLabel("月");
monthLabel.setForeground(controlTextColor);
result.add(monthLabel);
if (controlStyle > 0) {
hourSpin = new JSpinner(new SpinnerNumberModel(currentHour, 0, 23, 1));
hourSpin.setPreferredSize(new Dimension(35, 20));
hourSpin.setName("Hour");
hourSpin.addChangeListener(this);
result.add(hourSpin);
JLabel hourLabel = new JLabel("时");
hourLabel.setForeground(controlTextColor);
result.add(hourLabel);
}
if (controlStyle > 1) {
minuteSpin = new JSpinner(new SpinnerNumberModel(currentMinute, 0, 59, 1));
minuteSpin.setPreferredSize(new Dimension(35, 20));
minuteSpin.setName("Minute");
minuteSpin.addChangeListener(this);
result.add(minuteSpin);
JLabel minuteLabel = new JLabel("分");
minuteLabel.setForeground(controlTextColor);
result.add(minuteLabel);
}
return result;
}
private JPanel initWeekAndDayPanal() {
String colname[] = {"日", "一", "二", "三", "四", "五", "六"};
JPanel result = new JPanel();
result.setLayout(new GridLayout(7, 7));
result.setBackground(Color.white);
JLabel cell;
for (int i = 0; i < 7; i++) {
cell = new JLabel(colname[i]);
cell.setHorizontalAlignment(JLabel.CENTER);
if (i == 0 || i == 6) {
cell.setForeground(weekendFontColor);
} else {
cell.setForeground(weekFontColor);
}
result.add(cell);
}
int actionCommandId = 0;
for (int i = 0; i < 6; i++)
for (int j = 0; j < 7; j++) {
JButton numberButton = new JButton();
numberButton.setBorder(null);
numberButton.setHorizontalAlignment(SwingConstants.CENTER);
numberButton.setActionCommand(String.valueOf(actionCommandId));
numberButton.addActionListener(this);
numberButton.setBackground(palletTableColor);
numberButton.setForeground(dateFontColor);
if (j == 0 || j == 6) {
numberButton.setForeground(weekendFontColor);
} else {
numberButton.setForeground(dateFontColor);
}
daysButton[i][j] = numberButton;
numberButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
closeAndSetDate();
}
}
});
result.add(numberButton);
actionCommandId++;
}
return result;
}
public void showDateChooser(Point position) {
Object tmpobj = SwingUtilities.getWindowAncestor(jFormattedTextField);
if (tmpobj.getClass().isInstance(new JDialog()) || tmpobj.getClass().getSuperclass().isInstance(new JDialog())) {
JDialog ownerdialog = (JDialog) SwingUtilities.getWindowAncestor(jFormattedTextField);
if (dialog == null || dialog.getOwner() != ownerdialog) {
dialog = initDialog(ownerdialog);
}
dialog.setLocation(getAppropriateLocation(ownerdialog, position));
} else if (tmpobj.getClass().isInstance(new JFrame()) || tmpobj.getClass().getSuperclass().isInstance(new JFrame())) {
JFrame ownerFrame = (JFrame) SwingUtilities.getWindowAncestor(jFormattedTextField);
if (dialog == null || dialog.getOwner() != ownerFrame) {
dialog = initDialog(ownerFrame);
}
dialog.setLocation(getAppropriateLocation(ownerFrame, position));
}
initWeekAndDay();
dialog.setVisible(true);
}
private JDialog initDialog(JDialog owner) {
JDialog result = new JDialog(owner, this.getJDialogName(), true);
result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
result.getContentPane().add(this, BorderLayout.CENTER);
result.pack();
result.setSize(width, height);
return result;
}
private JDialog initDialog(JFrame owner) {
JDialog result = new JDialog(owner, this.getJDialogName(), true);
result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
result.getContentPane().add(this, BorderLayout.CENTER);
result.pack();
result.setSize(width, height);
return result;
}
private Point getAppropriateLocation(JDialog owner, Point position) {
Point result = new Point(position);
Point p = owner.getLocation();
int offsetX = (position.x + width) - (p.x + owner.getWidth());
int offsetY = (position.y + height) - (p.y + owner.getHeight());
if (offsetX > 0) {
result.x -= offsetX;
}
if (offsetY > 0) {
result.y -= offsetY;
}
return result;
}
private Point getAppropriateLocation(JFrame owner, Point position) {
Point result = new Point(position);
Point p = owner.getLocation();
int offsetX = (position.x + width) - (p.x + owner.getWidth());
int offsetY = (position.y + height) - (p.y + owner.getHeight());
if (offsetX > 0) {
result.x -= offsetX;
}
if (offsetY > 0) {
result.y -= offsetY;
}
return result;
}
public void closeAndSetDate() {
setDate(c.getTime());
dialog.dispose();
}
private Calendar getCalendar() {
Calendar result = Calendar.getInstance();
result.setTime(getDate());
return result;
}
private void initWeekAndDay() {
c.set(Calendar.DAY_OF_MONTH, 1);
int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (dayNo >= 1 && dayNo <= maxDayNo) {
String s = String.valueOf(dayNo);
daysButton[i][j].setVisible(true);
daysButton[i][j].setText(s);
} else {
daysButton[i][j].setVisible(false);
}
dayNo++;
}
}
dayColorUpdate(false);
}
private void dayColorUpdate(boolean isOldDay) {
int day = c.get(Calendar.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, 1);
int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK);
int i = actionCommandId / 7;
int j = actionCommandId % 7;
if (isOldDay) {
daysButton[i][j].setForeground(dateFontColor);
} else {
daysButton[i][j].setForeground(todayBackColor);
}
}
public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
if (source.getName().equals("Minute")) {
c.set(Calendar.MINUTE, getSelectedMinute());
return;
}
if (source.getName().equals("Hour")) {
c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
return;
}
dayColorUpdate(true);
if (source.getName().equals("Year")) {
c.set(Calendar.YEAR, getSelectedYear());
}
if (source.getName().equals("Month")) {
c.set(Calendar.MONTH, getSelectedMonth() - 1);
}
initWeekAndDay();
}
private int getSelectedYear() {
return ((Integer) yearSpin.getValue()).intValue();
}
private int getSelectedMonth() {
return ((Integer) monthSpin.getValue()).intValue();
}
private int getSelectedHour() {
return ((Integer) hourSpin.getValue()).intValue();
}
private int getSelectedMinute() {
return ((Integer) minuteSpin.getValue()).intValue();
}
public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
if (source.getText().length() == 0) {
return;
}
dayColorUpdate(true);
source.setForeground(todayBackColor);
int newDay = Integer.parseInt(source.getText());
c.set(Calendar.DAY_OF_MONTH, newDay);
}
public void setDate(Date date) {
jFormattedTextField.setText(getDefaultDateFormat().format(date));
}
public Date getDate() {
try {
String dateString = jFormattedTextField.getText();
return getDefaultDateFormat().parse(dateString);
} catch (ParseException e) {
return getNowDate();
} catch (Exception ee) {
return getNowDate();
}
}
private static Date getNowDate() {
return Calendar.getInstance().getTime();
}
private SimpleDateFormat getDefaultDateFormat() {
return new SimpleDateFormat(this.getFormat());
}
public int getLastYear() {
return lastYear;
}
public void setLastYear(int lastYear) {
this.lastYear = lastYear;
}
public int getStartYear() {
return startYear;
}
public void setStartYear(int startYear) {
this.startYear = startYear;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public String getJDialogName() {
return JDialogName;
}
public void setJDialogName(String JDialogName) {
this.JDialogName = JDialogName;
}
}
Loading…
Cancel
Save