diff --git a/help/help.html b/help/help.html index 69def7e4..ec4a4f00 100644 --- a/help/help.html +++ b/help/help.html @@ -1573,7 +1573,7 @@

3.10. Version

diff --git a/release/YaguraExtender.jar b/release/YaguraExtender.jar index 775b2375..429cbe27 100644 Binary files a/release/YaguraExtender.jar and b/release/YaguraExtender.jar differ diff --git a/src/yagura/external/TransUtil.java b/src/yagura/external/TransUtil.java index 4ac00911..394d8124 100644 --- a/src/yagura/external/TransUtil.java +++ b/src/yagura/external/TransUtil.java @@ -26,6 +26,10 @@ public class TransUtil { public enum EncodeType { ALL, ALPHANUM, LIGHT, STANDARD }; + + public static String toEmpty(Object obj) { + return (obj == null) ? "" : obj.toString(); + } // 条件一致時にEncode public final static Pattern PTN_ENCODE_ALL = Pattern.compile(".", Pattern.DOTALL); diff --git a/src/yagura/release.properties b/src/yagura/release.properties index 4fbb45fc..cbe0cc9f 100644 --- a/src/yagura/release.properties +++ b/src/yagura/release.properties @@ -1,7 +1,7 @@ # YaguraExtender build xml properties # version -version=1.7.15.0 +version=1.7.16.0 #lib asciidoctor-version=1.5.4 diff --git a/src/yagura/view/SendToItemDlg.form b/src/yagura/view/SendToItemDlg.form index 8f0f7d79..7bff1d4d 100644 --- a/src/yagura/view/SendToItemDlg.form +++ b/src/yagura/view/SendToItemDlg.form @@ -18,7 +18,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -112,45 +112,50 @@ - - - - - - - - - + + - + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + + + - + @@ -168,8 +173,6 @@ - - @@ -192,6 +195,20 @@ + + + + + + + + + + + + + + @@ -218,7 +235,7 @@ - + diff --git a/src/yagura/view/SendToItemDlg.java b/src/yagura/view/SendToItemDlg.java index 9166258a..4d1a2036 100644 --- a/src/yagura/view/SendToItemDlg.java +++ b/src/yagura/view/SendToItemDlg.java @@ -8,9 +8,11 @@ import yagura.model.SendToItem; import extend.util.HttpUtil; import java.io.File; +import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.JFileChooser; import javax.swing.JOptionPane; +import yagura.external.TransUtil; /** * @@ -47,10 +49,10 @@ private void initComponents() { lblMenuCaption = new javax.swing.JLabel(); txtMenuCaption = new javax.swing.JTextField(); chkServer = new javax.swing.JCheckBox(); - txtTargetLocal = new javax.swing.JTextField(); chkRequest = new javax.swing.JCheckBox(); chkResponse = new javax.swing.JCheckBox(); btnSelectExecute = new javax.swing.JButton(); + cmbTargetLocal = new javax.swing.JComboBox<>(); tabExtend = new javax.swing.JPanel(); cmbExtend = new javax.swing.JComboBox(); @@ -90,7 +92,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGroup(pnlApplyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnCancel) .addComponent(btnOK)) - .addContainerGap(19, Short.MAX_VALUE)) + .addContainerGap(17, Short.MAX_VALUE)) ); getContentPane().add(pnlApply, java.awt.BorderLayout.SOUTH); @@ -114,6 +116,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + cmbTargetLocal.setEditable(true); + cmbTargetLocal.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmbTargetLocalActionPerformed(evt); + } + }); + javax.swing.GroupLayout tabBaseLayout = new javax.swing.GroupLayout(tabBase); tabBase.setLayout(tabBaseLayout); tabBaseLayout.setHorizontalGroup( @@ -126,35 +135,38 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tabBaseLayout.createSequentialGroup() - .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtTargetLocal, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(tabBaseLayout.createSequentialGroup() - .addComponent(chkRequest) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(chkResponse))) - .addGap(18, 18, 18) + .addComponent(cmbTargetLocal, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnSelectExecute, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(txtMenuCaption, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(22, Short.MAX_VALUE)) + .addComponent(txtMenuCaption, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(tabBaseLayout.createSequentialGroup() + .addComponent(chkRequest) + .addGap(35, 35, 35) + .addComponent(chkResponse))) + .addGap(0, 28, Short.MAX_VALUE)) ); tabBaseLayout.setVerticalGroup( tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tabBaseLayout.createSequentialGroup() .addGap(10, 10, 10) - .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblMenuCaption) - .addComponent(txtMenuCaption, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(1, 1, 1) + .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(tabBaseLayout.createSequentialGroup() + .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblMenuCaption) + .addComponent(txtMenuCaption, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(tabBaseLayout.createSequentialGroup() + .addGap(4, 4, 4) + .addComponent(chkServer)) + .addComponent(cmbTargetLocal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(tabBaseLayout.createSequentialGroup() + .addComponent(btnSelectExecute) + .addGap(4, 4, 4))) .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(btnSelectExecute, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(chkServer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(txtTargetLocal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(tabBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(chkRequest) .addComponent(chkResponse)) - .addGap(22, 22, 22)) + .addContainerGap(24, Short.MAX_VALUE)) ); tabbetSendTo.addTab("Base", tabBase); @@ -173,7 +185,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGroup(tabExtendLayout.createSequentialGroup() .addContainerGap() .addComponent(cmbExtend, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(62, Short.MAX_VALUE)) + .addContainerGap(110, Short.MAX_VALUE)) ); tabbetSendTo.addTab("Extend", tabExtend); @@ -202,7 +214,7 @@ private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed String caption = this.txtMenuCaption.getText().trim(); - String target = this.txtTargetLocal.getText().trim(); + String target = TransUtil.toEmpty(this.cmbTargetLocal.getEditor().getItem()).trim(); boolean server = this.chkServer.isSelected(); if (this.isSelectedBase() && caption.isEmpty()) { JOptionPane.showMessageDialog(this, bundle.getString("view.sendto.add.empty"), "SendTo", JOptionPane.INFORMATION_MESSAGE); @@ -217,14 +229,18 @@ private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:e private void btnSelectExecuteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSelectExecuteActionPerformed JFileChooser filechooser = new JFileChooser(); filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - filechooser.setSelectedFile(new File(this.txtTargetLocal.getText())); + filechooser.setSelectedFile(new File(TransUtil.toEmpty(this.cmbTargetLocal.getEditor().getItem()).trim())); int selected = filechooser.showOpenDialog(this); if (selected == JFileChooser.APPROVE_OPTION) { File file = filechooser.getSelectedFile(); - this.txtTargetLocal.setText(file.getAbsolutePath()); + this.cmbTargetLocal.getEditor().setItem(file.getAbsolutePath()); } }//GEN-LAST:event_btnSelectExecuteActionPerformed + private void cmbTargetLocalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbTargetLocalActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_cmbTargetLocalActionPerformed + /** * @param args the command line arguments */ @@ -284,13 +300,13 @@ public void windowClosing(java.awt.event.WindowEvent e) { private javax.swing.JCheckBox chkResponse; private javax.swing.JCheckBox chkServer; private javax.swing.JComboBox cmbExtend; + private javax.swing.JComboBox cmbTargetLocal; private javax.swing.JLabel lblMenuCaption; private javax.swing.JPanel pnlApply; private javax.swing.JPanel tabBase; private javax.swing.JPanel tabExtend; private javax.swing.JTabbedPane tabbetSendTo; private javax.swing.JTextField txtMenuCaption; - private javax.swing.JTextField txtTargetLocal; // End of variables declaration//GEN-END:variables private boolean isSelectedBase() { @@ -305,7 +321,7 @@ public SendToItem getItem() { item.setSelected(true); if (this.isSelectedBase()) { item.setCaption(this.txtMenuCaption.getText().trim()); - item.setTarget(this.txtTargetLocal.getText().trim()); + item.setTarget(TransUtil.toEmpty(this.cmbTargetLocal.getEditor().getItem()).trim()); item.setServer(this.chkServer.isSelected() || HttpUtil.startsWithHttp(item.getTarget())); item.setRequest(this.chkRequest.isSelected()); item.setResponse(this.chkResponse.isSelected()); @@ -326,7 +342,7 @@ public void setItem(SendToItem item) { this.tabbetSendTo.setSelectedIndex(this.tabbetSendTo.indexOfTab("Base")); this.txtMenuCaption.setText(item.getCaption()); this.chkServer.setSelected(item.isServer()); - this.txtTargetLocal.setText(item.getTarget()); + this.cmbTargetLocal.getEditor().setItem(item.getTarget()); this.chkRequest.setSelected(item.isRequest()); this.chkResponse.setSelected(item.isResponse()); } else { @@ -335,4 +351,12 @@ public void setItem(SendToItem item) { this.cmbExtend.setSelectedItem(sendToExtend); } } + + public void setItemList(List sendToItemList) { + this.cmbTargetLocal.removeAllItems(); + for (SendToItem item : sendToItemList) { + if (item.getExtend() != null) continue; + this.cmbTargetLocal.addItem(item.getTarget()); + } + } } diff --git a/src/yagura/view/SendToTab.java b/src/yagura/view/SendToTab.java index 39a3a65c..409085ab 100644 --- a/src/yagura/view/SendToTab.java +++ b/src/yagura/view/SendToTab.java @@ -343,6 +343,7 @@ private void setEditItem(SendToItem item, boolean update) { @SuppressWarnings("unchecked") private void showSendToItemDlg(boolean editMode) { this.sendtoItemDlg.setLocationRelativeTo(this); + this.sendtoItemDlg.setItemList(this.getSendToItemList()); if (editMode) { this.sendtoItemDlg.setItem(getEditItem()); } else {