Skip to content

Commit 97b45c3

Browse files
committed
Refactor using inheritance loading both container and content XIB into same controller.
1 parent 48cade0 commit 97b45c3

File tree

5 files changed

+52
-40
lines changed

5 files changed

+52
-40
lines changed

osx/src/main/java/ch/cyberduck/ui/cocoa/controller/BookmarkContainerController.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,22 @@
1818
import ch.cyberduck.binding.Action;
1919
import ch.cyberduck.binding.Delegate;
2020
import ch.cyberduck.binding.Outlet;
21-
import ch.cyberduck.binding.SheetController;
21+
import ch.cyberduck.binding.application.NSPopUpButton;
2222
import ch.cyberduck.binding.application.NSView;
2323
import ch.cyberduck.binding.application.NSWindow;
2424
import ch.cyberduck.core.Host;
25+
import ch.cyberduck.core.LoginOptions;
2526
import ch.cyberduck.core.ProviderHelpServiceFactory;
2627
import ch.cyberduck.core.local.BrowserLauncherFactory;
2728

29+
import ch.cyberduck.ui.LoginInputValidator;
30+
2831
import org.rococoa.ID;
2932
import org.rococoa.cocoa.foundation.NSSize;
3033

31-
public abstract class BookmarkContainerController extends SheetController {
34+
public abstract class BookmarkContainerController extends DefaultBookmarkController {
3235

3336
private final Host bookmark;
34-
private final BookmarkController proxy;
3537

3638
/**
3739
* Container View
@@ -44,32 +46,40 @@ public abstract class BookmarkContainerController extends SheetController {
4446
@Outlet
4547
private NSView optionsView;
4648

47-
public BookmarkContainerController(final Host bookmark, final BookmarkController proxy) {
49+
public BookmarkContainerController(final Host bookmark) {
50+
super(bookmark);
4851
this.bookmark = bookmark;
49-
this.proxy = proxy;
5052
}
5153

52-
@Override
53-
public void loadBundle() {
54-
proxy.loadBundle();
55-
super.loadBundle();
54+
public BookmarkContainerController(final Host bookmark, final LoginOptions options) {
55+
super(bookmark, options);
56+
this.bookmark = bookmark;
57+
}
58+
59+
public BookmarkContainerController(final Host bookmark, final LoginInputValidator validator, final LoginOptions options) {
60+
super(bookmark, validator, options);
61+
this.bookmark = bookmark;
5662
}
5763

5864
@Override
5965
public void awakeFromNib() {
60-
proxy.awakeFromNib();
61-
proxy.setWindow(window);
62-
this.addSubview(containerContentView, proxy.getContentView());
66+
super.awakeFromNib();
67+
final NSView contentView = this.getContentView();
68+
this.addSubview(containerContentView, contentView);
6369
if(optionsView != null) {
64-
final NSView containerOptionsView = proxy.getContainerOptionsView();
70+
final NSView containerOptionsView = this.getContainerOptionsView();
6571
if(containerOptionsView != null) {
6672
this.addSubview(containerOptionsView, optionsView);
6773
}
6874
}
6975
this.resize();
70-
proxy.focus(window);
71-
proxy.addObserver(bookmark -> this.resize());
72-
super.awakeFromNib();
76+
this.focus(window);
77+
}
78+
79+
@Override
80+
public void protocolSelectionChanged(final NSPopUpButton sender) {
81+
super.protocolSelectionChanged(sender);
82+
this.resize();
7383
}
7484

7585
private void addSubview(final NSView parent, final NSView subview) {
@@ -113,12 +123,4 @@ protected double getMinWindowWidth() {
113123
public void helpButtonClicked(final ID sender) {
114124
BrowserLauncherFactory.get().open(ProviderHelpServiceFactory.get().help(bookmark.getProtocol()));
115125
}
116-
117-
public void update() {
118-
proxy.update();
119-
}
120-
121-
public void addObserver(final BookmarkController.BookmarkObserver observer) {
122-
proxy.addObserver(observer);
123-
}
124126
}

osx/src/main/java/ch/cyberduck/ui/cocoa/controller/BookmarkController.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@
1616
*/
1717

1818
import ch.cyberduck.binding.Action;
19-
import ch.cyberduck.binding.BundleController;
2019
import ch.cyberduck.binding.Outlet;
20+
import ch.cyberduck.binding.SheetController;
2121
import ch.cyberduck.binding.application.*;
2222
import ch.cyberduck.binding.foundation.NSArray;
2323
import ch.cyberduck.binding.foundation.NSAttributedString;
24+
import ch.cyberduck.binding.foundation.NSBundle;
2425
import ch.cyberduck.binding.foundation.NSData;
2526
import ch.cyberduck.binding.foundation.NSEnumerator;
2627
import ch.cyberduck.binding.foundation.NSNotification;
@@ -64,7 +65,7 @@
6465
import java.util.Set;
6566
import java.util.TimeZone;
6667

67-
public class BookmarkController extends BundleController implements NSTabView.Delegate {
68+
public abstract class BookmarkController extends SheetController implements NSTabView.Delegate {
6869
private static final Logger log = LogManager.getLogger(BookmarkController.class);
6970

7071
private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
@@ -131,8 +132,6 @@ public class BookmarkController extends BundleController implements NSTabView.De
131132
@Outlet
132133
private NSButton webUrlImage;
133134

134-
private NSWindow window;
135-
136135
public BookmarkController(final Host bookmark, final LoginInputValidator validator, final LoginOptions options) {
137136
this.bookmark = bookmark;
138137
this.validator = validator;
@@ -146,20 +145,22 @@ public void invalidate() {
146145
}
147146

148147
@Override
149-
protected String getBundleName() {
150-
return "Bookmark";
148+
public void loadBundle() {
149+
if(!NSBundle.loadNibNamed("Bookmark", this.id())) {
150+
throw new FactoryException(String.format("Failure loading %s.xib", "Bookmark"));
151+
}
152+
super.loadBundle();
151153
}
152154

155+
@Override
156+
protected abstract String getBundleName();
157+
153158
@Override
154159
public void awakeFromNib() {
155160
super.awakeFromNib();
156161
this.update();
157162
}
158163

159-
public void setWindow(final NSWindow window) {
160-
this.window = window;
161-
}
162-
163164
public interface BookmarkObserver {
164165
void change(final Host bookmark);
165166
}
@@ -200,7 +201,7 @@ public void setTabView(final NSTabView tabView) {
200201

201202
@Override
202203
public void tabView_didSelectTabViewItem(final NSTabView view, final NSTabViewItem item) {
203-
this.update();
204+
this.resize();
204205
}
205206

206207
public NSView getContentView() {

osx/src/main/java/ch/cyberduck/ui/cocoa/controller/ConnectionController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ConnectionController(final Host bookmark) {
3737
}
3838

3939
public ConnectionController(final Host bookmark, final LoginOptions options) {
40-
super(bookmark, new DefaultBookmarkController(bookmark, options));
40+
super(bookmark, options);
4141
this.bookmark = bookmark;
4242
this.options = options;
4343
}

osx/src/main/java/ch/cyberduck/ui/cocoa/controller/DefaultBookmarkController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,27 @@
2525
import ch.cyberduck.core.preferences.HostPreferencesFactory;
2626
import ch.cyberduck.ui.LoginInputValidator;
2727

28-
public class DefaultBookmarkController extends BookmarkController {
28+
public abstract class DefaultBookmarkController extends BookmarkController {
2929

3030
private final Host bookmark;
3131
private final LoginOptions options;
3232

33+
public DefaultBookmarkController(final Host bookmark) {
34+
this(bookmark, new LoginOptions(bookmark.getProtocol()));
35+
}
36+
3337
public DefaultBookmarkController(final Host bookmark, final LoginOptions options) {
3438
super(bookmark, new LoginInputValidator(bookmark, options), options);
3539
this.bookmark = bookmark;
3640
this.options = options;
3741
}
3842

43+
public DefaultBookmarkController(final Host bookmark, final LoginInputValidator validator, final LoginOptions options) {
44+
super(bookmark, validator, options);
45+
this.bookmark = bookmark;
46+
this.options = options;
47+
}
48+
3949
@Override
4050
public void setProtocolPopup(final NSPopUpButton button) {
4151
button.superview().setHidden(!HostPreferencesFactory.get(bookmark).getBoolean("bookmark.protocol.configurable"));

osx/src/main/java/ch/cyberduck/ui/cocoa/controller/ExtendedBookmarkController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import ch.cyberduck.core.Local;
3030
import ch.cyberduck.core.LocalFactory;
3131
import ch.cyberduck.core.LocaleFactory;
32-
import ch.cyberduck.core.LoginOptions;
3332
import ch.cyberduck.core.local.FilesystemBookmarkResolverFactory;
3433
import ch.cyberduck.core.preferences.HostPreferencesFactory;
3534
import ch.cyberduck.core.preferences.PreferencesFactory;
@@ -55,7 +54,7 @@ public class ExtendedBookmarkController extends BookmarkContainerController impl
5554
private NSOpenPanel downloadFolderOpenPanel;
5655

5756
public ExtendedBookmarkController(final Host bookmark) {
58-
super(bookmark, new DefaultBookmarkController(bookmark, new LoginOptions(bookmark.getProtocol())));
57+
super(bookmark);
5958
this.bookmark = bookmark;
6059
}
6160

@@ -152,7 +151,7 @@ public void downloadPathPopupClicked(final NSPopUpButton sender) {
152151
downloadFolderOpenPanel.setCanChooseDirectories(true);
153152
downloadFolderOpenPanel.setAllowsMultipleSelection(false);
154153
downloadFolderOpenPanel.setCanCreateDirectories(true);
155-
downloadFolderOpenPanel.beginSheetForDirectory(null, null, this.window, this.id(),
154+
downloadFolderOpenPanel.beginSheetForDirectory(null, null, window, this.id(),
156155
Foundation.selector("downloadPathPanelDidEnd:returnCode:contextInfo:"), null);
157156
}
158157
else {

0 commit comments

Comments
 (0)