Skip to content

Commit 5e3251f

Browse files
committed
fix: better error handling for bad config!
1 parent 69f38c4 commit 5e3251f

File tree

7 files changed

+41
-36
lines changed

7 files changed

+41
-36
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,6 @@ mvn clean compile assembly:single
5656

5757
```bash
5858
java -jar target/kimai-ui-1.0-SNAPSHOT-jar-with-dependencies.jar
59-
```
59+
```
60+
61+
java -Dswing.aatext=true -Dswing.plaf.metal.controlFont=Tahoma -Dswing.plaf.metal.userFont=Tahoma

src/main/java/uk/co/neontribe/kimai/Main.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@ public class Main {
2727
* @throws IOException Thrown if we can't read from the file system
2828
*/
2929
public static void main(String[] args) throws IOException {
30+
// System.setProperty("swing.plaf.metal.userFont", "Dialog-32");
31+
// System.setProperty("swing.plaf.metal.systemFont", "Dialog-32");
32+
// System.setProperty("swing.plaf.metal.controlFont", "Dialog-Bold-32");
33+
3034
// Create a new application frame and show it.
3135
// UIManager.setLookAndFeel ("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
3236
frame = new KimaiUiFrame();
3337
frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
34-
// frame.setSize(800, 600);
38+
// frame.setSize(1024, 768);
3539
frame.pack();
3640
frame.setVisible(true);
3741

src/main/java/uk/co/neontribe/kimai/api/Entity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public int getId() {
2727
}
2828

2929
public static HttpURLConnection makeHttpConnection(URL url, Settings settings) throws IOException {
30-
System.out.println("makeHttpConnection: " + settings.getKimaiUsername() + ", " + settings.getKimaiPassword() + ", " + ", " + settings.getKimaiUri());
30+
System.out.println("makeHttpConnection: " + settings.getKimaiUsername() + ", " + settings.getKimaiUri());
3131
HttpURLConnection con = (HttpURLConnection) url.openConnection();
3232
con.setRequestProperty("X-AUTH-USER", settings.getKimaiUsername());
3333
con.setRequestProperty("X-AUTH-TOKEN", settings.getKimaiPassword());

src/main/java/uk/co/neontribe/kimai/config/Settings.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,10 @@ public LastAccessed getLastAccessed() {
8282
return lastAccessed;
8383
}
8484

85-
public int getFontSize() {
86-
return this.fontSize;
87-
}
88-
8985
public void setKimaiUri(String kimaiUri) {
86+
if (kimaiUri.endsWith("/")) {
87+
kimaiUri = kimaiUri.substring(0, kimaiUri.length() -1);
88+
}
9089
if (!this.kimaiUri.equals(kimaiUri)) {
9190
this.kimaiUri = kimaiUri;
9291
this.dirty = true;
@@ -137,10 +136,6 @@ public void setLastAccessedActivity(Activity activity) {
137136
}
138137
}
139138

140-
// public void setFontSize(int fontSize) {
141-
// this.fontSize = fontSize;
142-
// }
143-
144139
public boolean isDirty() {
145140
return this.dirty;
146141
}

src/main/java/uk/co/neontribe/kimai/desktop/ConfigFrame.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package uk.co.neontribe.kimai.desktop;
22

3+
import uk.co.neontribe.kimai.Main;
34
import uk.co.neontribe.kimai.config.Settings;
45

56
import javax.swing.*;
@@ -16,10 +17,12 @@ public class ConfigFrame extends JDialog implements ActionListener {
1617
private final JTextField uri;
1718
private final JTextField username;
1819
private final JTextField password;
19-
// private final JTextField fontSize;
2020

2121
public ConfigFrame(Settings settings) {
2222
this.settings = settings;
23+
if (this.settings == null) {
24+
this.settings = new Settings();
25+
}
2326
this.setLayout(new BorderLayout(5, 5));
2427
this.setTitle("Settings");
2528

@@ -30,14 +33,12 @@ public ConfigFrame(Settings settings) {
3033
gridRight.add(uri = new JTextField(this.settings.getKimaiUri(), 30));
3134
gridRight.add(username = new JTextField(this.settings.getKimaiUsername(), 30));
3235
gridRight.add(password = new JPasswordField("", 30));
33-
// gridRight.add(fontSize = new JTextField("", settings.getFontSize()));
3436
this.add(gridRight, BorderLayout.CENTER);
3537

3638
JPanel gridLeft = new JPanel(new GridLayout(0, 1, 5, 5));
3739
gridLeft.add(new JLabel("Your Kimai Uri:"));
3840
gridLeft.add(new JLabel("Username:"));
3941
gridLeft.add(new JLabel("Password:"));
40-
// gridLeft.add(new JLabel("Font size:"));
4142
this.add(gridLeft, BorderLayout.WEST);
4243

4344
JButton save = new JButton("Save");
@@ -82,7 +83,6 @@ public void actionPerformed(ActionEvent e) {
8283
if (this.password.getText().length() > 0) {
8384
settings.setKimaiPassword(this.password.getText());
8485
}
85-
// settings.setFontSize(Integer.parseInt(this.fontSize.getText()));
8686
configFrame.setVisible(false);
8787
} catch (Exception ex) {
8888
System.err.println("Unreachable");

src/main/java/uk/co/neontribe/kimai/desktop/StatusPanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ public void setOpeKimaiUrl(String url) {
7171
this.openKimai.setText(url);
7272
}
7373

74+
public void setSettings(Settings settings) {
75+
this.settings = settings;
76+
}
77+
7478
public void setText(String text) {
7579
this.statusBar.setText(text);
7680
}

src/main/java/uk/co/neontribe/kimai/desktop/TimeEntryPanel.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,19 @@ public TimeEntryPanel() {
129129

130130
try {
131131
this.settings = Settings.load();
132-
133-
customer.addListSelectionListener(listSelectionEvent -> updateProjectCombo());
134-
project.addListSelectionListener(listSelectionEvent -> updateActivityCombo());
135-
activity.addListSelectionListener(listSelectionEvent -> saveLastAccessedActivity());
136-
137-
this.statusPanel.setOpeKimaiUrl(this.settings.getKimaiUri());
138-
139-
updateCustomerCombo();
140-
updateProjectCombo();
141132
} catch (IOException | ConfigNotInitialisedException e) {
142-
throw new RuntimeException(e);
133+
this.openConfigDialog();
143134
}
144135

145-
Main.changeFont(this, new Font(Font.SANS_SERIF, Font.PLAIN, settings.getFontSize()));
136+
customer.addListSelectionListener(listSelectionEvent -> updateProjectCombo());
137+
project.addListSelectionListener(listSelectionEvent -> updateActivityCombo());
138+
activity.addListSelectionListener(listSelectionEvent -> saveLastAccessedActivity());
139+
140+
this.statusPanel.setSettings(this.settings);
141+
this.statusPanel.setOpeKimaiUrl(this.settings.getKimaiUri());
142+
143+
updateCustomerCombo();
144+
updateProjectCombo();
146145
}
147146

148147
private void _setCursor(Cursor cursor) {
@@ -170,8 +169,10 @@ private void updateCustomerCombo() {
170169
}
171170
}
172171
}
172+
this.statusPanel.setText("");
173173
} catch (IOException e) {
174-
throw new RuntimeException(e);
174+
this.statusPanel.setText("Error: " + e.getMessage());
175+
e.printStackTrace();
175176
}
176177
}
177178

@@ -198,8 +199,10 @@ private void updateProjectCombo() {
198199
}
199200
}
200201
this.settings.save();
202+
this.statusPanel.setText("");
201203
} catch (IOException e) {
202-
throw new RuntimeException(e);
204+
this.statusPanel.setText("Error: " + e.getMessage());
205+
e.printStackTrace();
203206
}
204207
this._setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
205208
}
@@ -227,8 +230,10 @@ private void updateActivityCombo() {
227230
}
228231
}
229232
this.settings.save();
233+
this.statusPanel.setText("");
230234
} catch (IOException e) {
231-
this.openConfigDialog();
235+
this.statusPanel.setText("Error: " + e.getMessage());
236+
e.printStackTrace();
232237
}
233238
this._setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
234239
}
@@ -274,13 +279,7 @@ public void actionPerformed(ActionEvent actionEvent) {
274279
cal.setTime(_begin);
275280
Date _end = new Date(cal.getTimeInMillis() + (60L * minutes * 1000));
276281

277-
TimeSheet timesheet = new TimeSheet(
278-
_notes,
279-
_begin,
280-
_end,
281-
_project,
282-
_activity,
283-
user);
282+
TimeSheet timesheet = new TimeSheet(_notes, _begin, _end, _project, _activity, user);
284283

285284
Component topLevelFrame = ConfigFrame.getParentFrame(this);
286285
if (topLevelFrame != null) {
@@ -294,6 +293,7 @@ public void actionPerformed(ActionEvent actionEvent) {
294293
if (topLevelFrame != null) {
295294
topLevelFrame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
296295
}
296+
this.statusPanel.setText("");
297297
} catch (Exception e) {
298298
e.printStackTrace();
299299
if (e.getMessage() == null) {

0 commit comments

Comments
 (0)