Improve pad sharing
This commit is contained in:
parent
17d50d9c29
commit
49c7c1cf61
@ -49,9 +49,12 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Scanner;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||
|
||||
@ -132,4 +135,12 @@ public class FileUtils {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getUrl(String url) throws MalformedURLException, IOException {
|
||||
String out;
|
||||
try (Scanner sc = new Scanner(new URL("http://www.google.com").openStream(), "UTF-8")) {
|
||||
out = sc.useDelimiter("\\A").next();
|
||||
}
|
||||
return out;
|
||||
}
|
||||
}
|
||||
|
@ -295,8 +295,7 @@ public class License extends javax.swing.JInternalFrame {
|
||||
}//GEN-LAST:event_exitBtnActionPerformed
|
||||
|
||||
private boolean checkRegex() {
|
||||
String regex = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]+$";
|
||||
if (emailBox.getText().matches(regex)) {
|
||||
if (checkEmail(emailBox.getText())) {
|
||||
contBtn.setEnabled(true);
|
||||
return true;
|
||||
} else {
|
||||
@ -305,6 +304,11 @@ public class License extends javax.swing.JInternalFrame {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean checkEmail(String email) {
|
||||
String regex = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]+$";
|
||||
return (email.matches(regex));
|
||||
}
|
||||
|
||||
public void exit() {
|
||||
dispose();
|
||||
}
|
||||
@ -323,7 +327,7 @@ public class License extends javax.swing.JInternalFrame {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Debug.println("Checking license...");
|
||||
System.out.println("Checking license...");
|
||||
URL url = new URL(API_URL + "liccheck.php?email=" + email);
|
||||
String line;
|
||||
try (InputStream is = url.openStream();
|
||||
|
@ -197,14 +197,18 @@ public class Pads extends javax.swing.JInternalFrame {
|
||||
* @throws IOException if things break.
|
||||
*/
|
||||
public static EPLiteClient getClient() throws Exception {
|
||||
// Load the API key from a file, so it's not included with Git.
|
||||
String apikey;
|
||||
// Enable key change without full SyMAT update
|
||||
if (!PrefStorage.getSetting("padkey-override", "").equals("")) {
|
||||
apikey = PrefStorage.getSetting("padkey-override", "");
|
||||
} else {
|
||||
// Load the API key from a file, so it's not included with Git.
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(
|
||||
Pads.class
|
||||
.getResourceAsStream("/padkey")));
|
||||
apikey = reader.readLine();
|
||||
|
||||
}
|
||||
// New client
|
||||
return new EPLiteClient(PADS_URL, apikey);
|
||||
}
|
||||
@ -220,7 +224,7 @@ public class Pads extends javax.swing.JInternalFrame {
|
||||
try {
|
||||
text = getClient().getText(id).getOrDefault("text", "").toString();
|
||||
} catch (Exception ex) {
|
||||
text = "Error: Could not get pad contents: " + ex.getMessage();
|
||||
text = "Error: " + ex.getMessage();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
@ -38,13 +38,14 @@
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<EmptySpace pref="17" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="padIDBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="7" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -74,9 +75,15 @@
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="copyIDBtn" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Component id="copyLinkBtn" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="emailBox" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="emailBtn" alignment="0" max="32767" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
@ -86,7 +93,13 @@
|
||||
<Component id="copyIDBtn" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="copyLinkBtn" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="77" max="32767" attributes="0"/>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="emailBox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="emailBtn" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="5" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@ -108,6 +121,25 @@
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="copyLinkBtnActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="emailBtn">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Send Email"/>
|
||||
<Property name="enabled" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="emailBtnActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JTextField" name="emailBox">
|
||||
<Events>
|
||||
<EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="emailBoxKeyTyped"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="jLabel2">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Email Link:"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
|
@ -48,6 +48,9 @@ package net.apocalypselabs.symat;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.Clipboard;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -56,8 +59,10 @@ import java.awt.datatransfer.StringSelection;
|
||||
public class SharePad extends javax.swing.JPanel {
|
||||
|
||||
String padid = "";
|
||||
|
||||
/**
|
||||
* Creates new form SharePad
|
||||
*
|
||||
* @param id The pad ID to share.
|
||||
*/
|
||||
public SharePad(String id) {
|
||||
@ -80,6 +85,9 @@ public class SharePad extends javax.swing.JPanel {
|
||||
jPanel1 = new javax.swing.JPanel();
|
||||
copyIDBtn = new javax.swing.JButton();
|
||||
copyLinkBtn = new javax.swing.JButton();
|
||||
emailBtn = new javax.swing.JButton();
|
||||
emailBox = new javax.swing.JTextField();
|
||||
jLabel2 = new javax.swing.JLabel();
|
||||
|
||||
setMinimumSize(new java.awt.Dimension(188, 172));
|
||||
|
||||
@ -103,14 +111,35 @@ public class SharePad extends javax.swing.JPanel {
|
||||
}
|
||||
});
|
||||
|
||||
emailBtn.setText("Send Email");
|
||||
emailBtn.setEnabled(false);
|
||||
emailBtn.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
emailBtnActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
emailBox.addKeyListener(new java.awt.event.KeyAdapter() {
|
||||
public void keyTyped(java.awt.event.KeyEvent evt) {
|
||||
emailBoxKeyTyped(evt);
|
||||
}
|
||||
});
|
||||
|
||||
jLabel2.setText("Email Link:");
|
||||
|
||||
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
|
||||
jPanel1.setLayout(jPanel1Layout);
|
||||
jPanel1Layout.setHorizontalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addComponent(copyIDBtn)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(copyLinkBtn))
|
||||
.addComponent(emailBox)
|
||||
.addComponent(emailBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addComponent(jLabel2)
|
||||
.addGap(0, 0, Short.MAX_VALUE))
|
||||
);
|
||||
jPanel1Layout.setVerticalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
@ -118,7 +147,13 @@ public class SharePad extends javax.swing.JPanel {
|
||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(copyIDBtn)
|
||||
.addComponent(copyLinkBtn))
|
||||
.addGap(0, 77, Short.MAX_VALUE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(jLabel2)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(emailBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(emailBtn)
|
||||
.addGap(5, 5, 5))
|
||||
);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
@ -138,12 +173,13 @@ public class SharePad extends javax.swing.JPanel {
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addContainerGap(17, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jLabel1)
|
||||
.addComponent(padIDBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGap(18, 18, 18)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(7, 7, 7))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
@ -152,9 +188,75 @@ public class SharePad extends javax.swing.JPanel {
|
||||
}//GEN-LAST:event_copyIDBtnActionPerformed
|
||||
|
||||
private void copyLinkBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyLinkBtnActionPerformed
|
||||
toClipboard(Pads.PADS_URL+"/p/"+padid);
|
||||
toClipboard(Pads.PADS_URL + "/p/" + padid);
|
||||
}//GEN-LAST:event_copyLinkBtnActionPerformed
|
||||
|
||||
private void emailBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_emailBtnActionPerformed
|
||||
if (License.checkEmail(emailBox.getText())) {
|
||||
emailBtn.setEnabled(false);
|
||||
emailBtn.setText("Sending...");
|
||||
new EmailThread(emailBox.getText(), padid).start();
|
||||
}
|
||||
}//GEN-LAST:event_emailBtnActionPerformed
|
||||
|
||||
private class EmailThread extends Thread {
|
||||
|
||||
private final String email;
|
||||
private final String pad;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
String f = FileUtils.getUrl(
|
||||
Main.API_URL + "sendpad.php?email="
|
||||
+ email + "&padid=" + pad);
|
||||
if (f.contains("OK")) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
emailBtn.setText("Link Sent!");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
emailBtn.setText("Error.");
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
emailBtn.setText("Error, retry?");
|
||||
}
|
||||
});
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1500);
|
||||
} catch (InterruptedException ex) {
|
||||
|
||||
}
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
emailBtn.setEnabled(true);
|
||||
emailBtn.setText("Send Email");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public EmailThread(String e, String p) {
|
||||
email = e;
|
||||
pad = p;
|
||||
}
|
||||
}
|
||||
|
||||
private void emailBoxKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_emailBoxKeyTyped
|
||||
emailBtn.setEnabled(License.checkEmail(emailBox.getText()));
|
||||
}//GEN-LAST:event_emailBoxKeyTyped
|
||||
|
||||
private void toClipboard(String text) {
|
||||
StringSelection stringSelection = new StringSelection(text);
|
||||
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
@ -164,7 +266,10 @@ public class SharePad extends javax.swing.JPanel {
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton copyIDBtn;
|
||||
private javax.swing.JButton copyLinkBtn;
|
||||
private javax.swing.JTextField emailBox;
|
||||
private javax.swing.JButton emailBtn;
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JLabel jLabel2;
|
||||
private javax.swing.JPanel jPanel1;
|
||||
private javax.swing.JTextField padIDBox;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
Loading…
x
Reference in New Issue
Block a user