forked from fanruan/design
XiaXiang
6 years ago
5 changed files with 180 additions and 79 deletions
@ -1,74 +0,0 @@
|
||||
package com.fr.design.mainframe.toolbar; |
||||
|
||||
import com.fr.design.mainframe.vcs.ui.FileVersionCellEditor; |
||||
import com.fr.design.mainframe.vcs.ui.FileVersionCellRender; |
||||
import com.fr.design.mainframe.vcs.ui.FileVersionFirstRowPanel; |
||||
import com.fr.design.mainframe.vcs.ui.FileVersionRowPanel; |
||||
import com.fr.design.mainframe.vcs.ui.FileVersionTablePanel; |
||||
import com.fr.design.mainframe.vcs.ui.FileVersionsPanel; |
||||
import com.fr.third.javax.inject.Singleton; |
||||
import com.fr.third.springframework.context.annotation.Bean; |
||||
import com.fr.third.springframework.context.annotation.ComponentScan; |
||||
import com.fr.third.springframework.context.annotation.Configuration; |
||||
import com.fr.workspace.WorkContext; |
||||
import com.fr.workspace.server.vcs.VcsOperator; |
||||
import com.fr.workspace.server.vcs.VcsOperatorImpl; |
||||
import com.fr.workspace.server.vcs.filesystem.VcsFileSystem; |
||||
import com.fr.workspace.server.vcs.git.FineGit; |
||||
|
||||
|
||||
/** |
||||
* Created by XiaXiang on 2019/4/16. |
||||
*/ |
||||
@Configuration |
||||
@ComponentScan({"com.fr.workspace.server.vcs", "com.fr.design.mainframe.vcs"}) |
||||
public class VcsConfig { |
||||
@Bean |
||||
@Singleton |
||||
public FileVersionsPanel fileVersionsPanel() { |
||||
return new FileVersionsPanel(fileVersionTablePanel()); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public FileVersionTablePanel fileVersionTablePanel() { |
||||
return new FileVersionTablePanel(vcsOperator(), fileVersionCellEditor(), fileVersionCellRender()); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public FileVersionCellEditor fileVersionCellEditor() { |
||||
return new FileVersionCellEditor(fileVersionFirstRowPanel(), fileVersionRowPanel(), vcsOperator()); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public FileVersionFirstRowPanel fileVersionFirstRowPanel() { |
||||
return new FileVersionFirstRowPanel(); |
||||
} |
||||
|
||||
@Bean |
||||
public FileVersionRowPanel fileVersionRowPanel() { |
||||
return new FileVersionRowPanel(vcsOperator()); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public FileVersionCellRender fileVersionCellRender() { |
||||
return new FileVersionCellRender(fileVersionFirstRowPanel(), fileVersionRowPanel()); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public VcsOperator vcsOperator() { |
||||
return new VcsOperatorImpl(vcsFileSystem(), new FineGit(vcsFileSystem().getVcsHistoryPath())); |
||||
} |
||||
|
||||
@Bean |
||||
@Singleton |
||||
public VcsFileSystem vcsFileSystem() { |
||||
return new VcsFileSystem(WorkContext.getCurrent()); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,47 @@
|
||||
package com.fr.workspace.server.vcs.common; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.locale.InterProviderFactory; |
||||
import com.fr.workspace.WorkContext; |
||||
|
||||
import javax.swing.Icon; |
||||
import javax.swing.border.EmptyBorder; |
||||
import java.awt.Color; |
||||
|
||||
import static com.fr.stable.StableUtils.pathJoin; |
||||
|
||||
|
||||
public class Constants { |
||||
|
||||
public final static String VCS_DIR = "vcs"; |
||||
|
||||
// 如果用其他方式实现vcs,未必需要这个cache
|
||||
//TODO 要不要放到其他地方
|
||||
public final static String VCS_CACHE_DIR = pathJoin(VCS_DIR, "cache"); |
||||
|
||||
public final static String CURRENT_USERSNAME = WorkContext.getCurrent().isLocal() |
||||
? InterProviderFactory.getProvider().getLocText("本地用户") |
||||
: WorkContext.getCurrent().getConnection().getUserName(); |
||||
|
||||
public final static Color TABLE_SELECT_BACKGROUND = new Color(0xD8F2FD); |
||||
|
||||
public final static Color COPY_VERSION_BTN_COLOR = new Color(0x419BF9); |
||||
|
||||
public final static Color DELETE_VERSION_BTN_COLOR = new Color(0xEB1D1F); |
||||
|
||||
public final static EmptyBorder EMPTY_BORDER = new EmptyBorder(5, 10, 0, 10); |
||||
|
||||
public final static EmptyBorder EMPTY_BORDER_BOTTOM = new EmptyBorder(10, 10, 10, 10); |
||||
|
||||
|
||||
public final static Icon VCS_LIST_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/vcs_list.png"); |
||||
public final static Icon VCS_BACK_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/vcs_back.png"); |
||||
public final static Icon VCS_SAVE_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/vcs_save.png"); |
||||
public final static Icon VCS_FILTER_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/icon_filter@1x.png"); |
||||
public final static Icon VCS_EDIT_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/icon_edit.png"); |
||||
public final static Icon VCS_DELETE_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/icon_delete.png"); |
||||
public final static Icon VCS_USER_PNG = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/icon_user@1x.png"); |
||||
public final static Icon VCS_REVERT = BaseUtils.readIcon("/com/fr/design/mainframe/vcs/images/icon_revert.png"); |
||||
|
||||
|
||||
} |
@ -0,0 +1,131 @@
|
||||
package com.fr.plugin.vcs.ui; |
||||
|
||||
import com.fr.design.dialog.UIDialog; |
||||
import com.fr.design.file.HistoryTemplateListPane; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.icontainer.UIScrollPane; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.itextarea.UITextArea; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
import com.fr.design.mainframe.JTemplate; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
import com.fr.general.Inter; |
||||
import com.fr.plugin.vcs.Vcs; |
||||
import com.fr.plugin.vcs.common.proxy.VcsCacheFileNodeFileProxy; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.third.guava.base.Preconditions; |
||||
import com.google.inject.Inject; |
||||
|
||||
import javax.swing.JPanel; |
||||
import javax.swing.JScrollPane; |
||||
import java.awt.BorderLayout; |
||||
import java.awt.Component; |
||||
import java.awt.FlowLayout; |
||||
import java.awt.Frame; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
import static com.fr.plugin.vcs.common.CommonUtils.editingFilename; |
||||
import static com.fr.plugin.vcs.common.Constants.CURRENT_USERSNAME; |
||||
|
||||
/** |
||||
* 保存保本时候弹出的对话框,输入commit msg,点确定保存版本 |
||||
* Created by hzzz on 2017/12/11. |
||||
*/ |
||||
public class SaveFileVersionDialog extends UIDialog { |
||||
|
||||
private final UITextArea msgTestArea = new UITextArea(); |
||||
private final UILabel versionLabel = new UILabel(); |
||||
private Vcs vcs; |
||||
private FileVersionTablePanel fileVersionTablePanel; |
||||
|
||||
@Inject |
||||
public SaveFileVersionDialog(FileVersionTablePanel fileVersionTablePanel, Vcs vcs) { |
||||
this(DesignerContext.getDesignerFrame()); |
||||
this.vcs = Preconditions.checkNotNull(vcs, "vcs is null"); |
||||
this.fileVersionTablePanel = Preconditions.checkNotNull(fileVersionTablePanel, "fileVersionTablePanel is null"); |
||||
} |
||||
|
||||
private SaveFileVersionDialog(Frame parent) { |
||||
super(parent); |
||||
|
||||
initComponents(); |
||||
setModal(true); |
||||
setTitle(Inter.getLocText("Plugin-VCS_Save_Version")); |
||||
setSize(300, 220); |
||||
setResizable(false); |
||||
GUICoreUtils.centerWindow(this); |
||||
|
||||
} |
||||
|
||||
private void initComponents() { |
||||
|
||||
JPanel fontPane = new JPanel(new BorderLayout()); |
||||
fontPane.add(new UILabel(" " + Inter.getLocText("Plugin-VCS_Version_Message") + ":"), BorderLayout.NORTH); |
||||
|
||||
msgTestArea.setBorder(null); |
||||
JScrollPane jScrollPane = new UIScrollPane(msgTestArea); |
||||
|
||||
Component[][] components = new Component[][]{ |
||||
new Component[]{new UILabel(" " + Inter.getLocText("Plugin-VCS_Version_Number") + ":"), versionLabel}, |
||||
new Component[]{fontPane, jScrollPane} |
||||
}; |
||||
double[] rowSizes = new double[]{25, 100}; |
||||
double[] columnSizes = new double[]{70, 200}; |
||||
|
||||
add(TableLayoutHelper.createTableLayoutPane(components, rowSizes, columnSizes), BorderLayout.CENTER); |
||||
|
||||
JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.RIGHT)); |
||||
add(buttonPane, BorderLayout.SOUTH); |
||||
|
||||
UIButton ok = new UIButton(Inter.getLocText("OK")); |
||||
UIButton cancel = new UIButton(Inter.getLocText("Cancel")); |
||||
|
||||
buttonPane.add(ok); |
||||
buttonPane.add(cancel); |
||||
|
||||
ok.addActionListener(new ActionListener() { |
||||
public void actionPerformed(ActionEvent e) { |
||||
JTemplate<?, ?> jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); |
||||
jt.stopEditing(); |
||||
jt.saveTemplate(); |
||||
String filename = editingFilename(); |
||||
String versionLabelText = versionLabel.getText(); |
||||
// V.3 -> 3
|
||||
String version = versionLabelText.substring(2); |
||||
//TODO refactor
|
||||
if (jt.getEditingFILE() instanceof VcsCacheFileNodeFileProxy) { |
||||
vcs.saveVersionFromCache(CURRENT_USERSNAME, filename, msgTestArea.getText(), Integer.parseInt(version)); |
||||
fileVersionTablePanel.updateModel(1); |
||||
} else { |
||||
vcs.saveVersion(CURRENT_USERSNAME, filename, msgTestArea.getText(), Integer.parseInt(version)); |
||||
} |
||||
jt.requestFocus(); |
||||
doOK(); |
||||
} |
||||
}); |
||||
|
||||
cancel.addActionListener(new ActionListener() { |
||||
public void actionPerformed(ActionEvent e) { |
||||
doCancel(); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private void refresh() { |
||||
int latestFileVersion = vcs.getLatestFileVersion(editingFilename()); |
||||
versionLabel.setText("V." + String.valueOf(latestFileVersion + 1)); |
||||
msgTestArea.setText(StringUtils.EMPTY); |
||||
} |
||||
|
||||
public void showMsgInputDialog() { |
||||
refresh(); |
||||
setVisible(true); |
||||
} |
||||
|
||||
@Override |
||||
public void checkValid() throws Exception { |
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue