From 3111cc5ceac1133d86cca1bde8f869997abc457d Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Sun, 14 Aug 2016 11:23:41 +0200 Subject: [PATCH] Localize, Handle TODOs, Refracotr Code --- .../tobias/playpad/assets/lang/_de.properties | 19 ++++-- .../src/de/tobias/playpad/PlayPadImpl.java | 62 ++++++++++++++++++- .../src/de/tobias/playpad/PlayPadMain.java | 46 ++------------ PlayWall/src/de/tobias/playpad/Strings.java | 21 +++++-- .../playpad/audio/ClipAudioHandler.java | 6 +- .../audio/ClipAudioHandlerConnect.java | 11 +++- .../playpad/audio/JavaFXAudioHandler.java | 1 + .../playpad/audio/JavaFXHandlerConnect.java | 9 ++- .../playpad/audio/TinyAudioHandler.java | 2 + .../audio/TinyAudioHandlerConnect.java | 9 ++- .../desktop/DesktopMainLayoutConnect.java | 15 ++++- .../DesktopMenuToolbarViewController.java | 4 +- .../desktop/DesktopSearchController.java | 4 +- .../layout/touch/TouchMainLayoutConnect.java | 17 ++++- .../de/tobias/playpad/view/HelpMenuItem.java | 2 +- .../view/MapperOverviewViewController.java | 10 ++- .../audio/ClipSettingsViewController.java | 4 +- .../TinySoundSettingsViewController.java | 4 +- .../viewcontroller/dialog/UpdaterDialog.java | 3 - .../option/global/KeysConflictDialog.java | 33 ++++++++++ .../option/global/KeysTabViewController.java | 18 ++++-- .../profile/AudioTabViewController.java | 6 +- .../de/tobias/playpad/audio/AudioHandler.java | 1 - .../playpad/audio/AudioHandlerConnect.java | 30 ++++++++- .../playpad/settings/keys/KeyCollection.java | 11 ++++ ...r.java => AudioHandlerViewController.java} | 4 +- 26 files changed, 259 insertions(+), 93 deletions(-) create mode 100644 PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysConflictDialog.java rename PlayWallCore/src/de/tobias/playpad/viewcontroller/{AudioTypeViewController.java => AudioHandlerViewController.java} (80%) diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties index 9d1ef416..6959ecc5 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties @@ -64,11 +64,11 @@ UI.Window.Settings.Layout.Title=Layout UI.Window.Settings.Player.Title=Player UI.Window.Settings.Audio.Title=Audio UI.Window.Settings.Updates.Title=Updates +UI.Window.Settings.Keys.Title=Tastaturbefehle -# UI - Dialog - DragAndDrop -UI.Dialog.DragAndDrop.Header=Hinweis -UI.Dialog.DragAndDrop.Content=F�r das Verschieben von Kacheln gibt es zwei M�glichkeiten: Vertauschen oder Ersetzen.\nUm die gw�hlte Kachel mit der Zielkachel zu vertauschen, muss der obere Teil der Zielkachel gew�hlt werden. Es erscheint eine blaue Umrandung. \nUm die ausgew�hlte Kachel mit der Zielkachel zu ersetzen, muss der untere Teil der Zielkachel gew�hlt werden. Es erscheint eine rote Umrandung. -UI.Dialog.DragAndDrop.Button=OK +# UI - Settings - Keys +UI.Settings.Keys.Conflict.Header=Konflikt +UI.Settings.Keys.Conflict.Content=Es gibt bereits Aktionen, bei denen diese Tastenkombination verwendet wird: \n{} # UI - Dialog - NewProfile UI.Dialog.NewProfile.Content=Geben Sie einen Namen f�r das neue Profil ein: @@ -239,4 +239,13 @@ TriggerPoint.EOF_STOP=Ende/Stop # Drag and Drop Mode DnDMode.Replace=Ersetzen -DnDMode.Move=Tauschen \ No newline at end of file +DnDMode.Move=Tauschen + +# Main Layout +MainLayout.Desktop=Desktop Modus +MainLayout.Touch=Touch Modus + +# Suche +Search.Button=Suchen +Search.Placeholder=Suche +Search.Alert.NoMatches=Keine Treffer gefunden. \ No newline at end of file diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java index 122153c9..404fc925 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java @@ -12,13 +12,23 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.ResourceBundle; import java.util.Set; +import org.dom4j.DocumentException; + +import de.tobias.playpad.action.mapper.MapperRegistry; +import de.tobias.playpad.audio.JavaFXAudioHandler; +import de.tobias.playpad.design.modern.ModernGlobalDesign; +import de.tobias.playpad.midi.device.DeviceRegistry; +import de.tobias.playpad.midi.device.PD12; import de.tobias.playpad.plugin.PadListener; import de.tobias.playpad.plugin.SettingsListener; import de.tobias.playpad.plugin.WindowListener; import de.tobias.playpad.project.Project; +import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.settings.GlobalSettings; +import de.tobias.playpad.view.MapperOverviewViewController; import de.tobias.playpad.viewcontroller.IPadSettingsViewController; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.main.MainViewControllerV2; @@ -50,7 +60,7 @@ public class PlayPadImpl implements PlayPad { public PlayPadImpl(GlobalSettings globalSettings) { pluginManager = PluginManagerFactory.createPluginManager(); deletedPlugins = new HashSet<>(); - + this.globalSettings = globalSettings; } @@ -141,6 +151,19 @@ public class PlayPadImpl implements PlayPad { @Override public void shutdown() { + // Shutdown components + PlayPadPlugin.getRegistryCollection().getAudioHandlers().getComponents().forEach(i -> + { + if (i instanceof AutoCloseable) { + try { + ((AutoCloseable) i).close(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); + // Delete Plugins Info Textfile --> Löschen dann beim Start. Path pluginInfoPath = ApplicationUtils.getApplication().getPath(PathType.LIBRARY, PLUGIN_INFO_TXT); try { @@ -181,4 +204,41 @@ public class PlayPadImpl implements PlayPad { public Project getCurrentProject() { return currentProject; } + + public void startup(ResourceBundle resourceBundle) { + registerComponents(resourceBundle); + } + + private void registerComponents(ResourceBundle resourceBundle) { + // Midi + DeviceRegistry.getFactoryInstance().registerDevice(PD12.NAME, PD12.class); + + try { + // Load Components + RegistryCollection registryCollection = PlayPadPlugin.getRegistryCollection(); + + registryCollection.getActions().loadComponentsFromFile("de/tobias/playpad/components/Actions.xml"); + registryCollection.getAudioHandlers().loadComponentsFromFile("de/tobias/playpad/components/AudioHandler.xml"); + registryCollection.getDragModes().loadComponentsFromFile("de/tobias/playpad/components/DragMode.xml"); + registryCollection.getDesigns().loadComponentsFromFile("de/tobias/playpad/components/Design.xml"); + registryCollection.getMappers().loadComponentsFromFile("de/tobias/playpad/components/Mapper.xml"); + registryCollection.getPadContents().loadComponentsFromFile("de/tobias/playpad/components/PadContent.xml"); + registryCollection.getTriggerItems().loadComponentsFromFile("de/tobias/playpad/components/Trigger.xml"); + registryCollection.getMainLayouts().loadComponentsFromFile("de/tobias/playpad/components/Layout.xml"); + + // Set Default + registryCollection.getAudioHandlers().setDefaultID(JavaFXAudioHandler.NAME); + registryCollection.getDesigns().setDefaultID(ModernGlobalDesign.TYPE); + } catch (IllegalAccessException | ClassNotFoundException | InstantiationException | IOException | DocumentException + | NoSuchComponentException e) { + e.printStackTrace(); + } + + // Key Bindings + GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings(); + globalSettings.getKeyCollection().loadDefaultFromFile("de/tobias/playpad/components/Keys.xml", resourceBundle); + + // Mapper + MapperRegistry.setOverviewViewController(new MapperOverviewViewController()); + } } diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java index cdec5baf..1deaee5e 100644 --- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java +++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java @@ -12,9 +12,7 @@ import java.util.UUID; import org.dom4j.DocumentException; import de.tobias.playpad.action.mapper.MapperRegistry; -import de.tobias.playpad.audio.ClipAudioHandler; import de.tobias.playpad.audio.JavaFXAudioHandler; -import de.tobias.playpad.audio.TinyAudioHandler; import de.tobias.playpad.design.modern.ModernGlobalDesign; import de.tobias.playpad.midi.device.DeviceRegistry; import de.tobias.playpad.midi.device.PD12; @@ -135,14 +133,16 @@ public class PlayPadMain extends Application implements LocalizationDelegate { try { Image stageIcon = new Image(iconPath); PlayPadMain.stageIcon = Optional.of(stageIcon); - } catch (Exception e) {} + } catch (Exception e) { + } /* * Setup */ updater = new PlayPadUpdater(); UpdateRegistery.registerUpdateable(updater); - registerComponents(); + + impl.startup(uiResourceBundle); // Load Plugin Path Path pluginFolder; @@ -216,50 +216,12 @@ public class PlayPadMain extends Application implements LocalizationDelegate { e.printStackTrace(); // Speichern Fehler } - // Shutdown components - // TODO use AutoCloseable - TinyAudioHandler.shutdown(); - ClipAudioHandler.shutdown(); - impl.shutdown(); Platform.exit(); System.exit(0); } - private void registerComponents() { - // Midi - DeviceRegistry.getFactoryInstance().registerDevice(PD12.NAME, PD12.class); - - try { - // Load Components - RegistryCollection registryCollection = PlayPadPlugin.getRegistryCollection(); - - registryCollection.getActions().loadComponentsFromFile("de/tobias/playpad/components/Actions.xml"); - registryCollection.getAudioHandlers().loadComponentsFromFile("de/tobias/playpad/components/AudioHandler.xml"); - registryCollection.getDragModes().loadComponentsFromFile("de/tobias/playpad/components/DragMode.xml"); - registryCollection.getDesigns().loadComponentsFromFile("de/tobias/playpad/components/Design.xml"); - registryCollection.getMappers().loadComponentsFromFile("de/tobias/playpad/components/Mapper.xml"); - registryCollection.getPadContents().loadComponentsFromFile("de/tobias/playpad/components/PadContent.xml"); - registryCollection.getTriggerItems().loadComponentsFromFile("de/tobias/playpad/components/Trigger.xml"); - registryCollection.getMainLayouts().loadComponentsFromFile("de/tobias/playpad/components/Layout.xml"); - - // Set Default - registryCollection.getAudioHandlers().setDefaultID(JavaFXAudioHandler.NAME); - registryCollection.getDesigns().setDefaultID(ModernGlobalDesign.TYPE); - } catch (IllegalAccessException | ClassNotFoundException | InstantiationException | IOException | DocumentException - | NoSuchComponentException e) { - e.printStackTrace(); - } - - // Key Bindings - GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings(); - globalSettings.getKeyCollection().loadDefaultFromFile("de/tobias/playpad/components/Keys.xml", uiResourceBundle); - - // Mapper - MapperRegistry.setOverviewViewController(new MapperOverviewViewController()); - } - private void setupPlugins(Path pluginPath) throws IOException, MalformedURLException { // Delete old plugins impl.deletePlugins(); diff --git a/PlayWall/src/de/tobias/playpad/Strings.java b/PlayWall/src/de/tobias/playpad/Strings.java index 7234c38e..1aa77636 100644 --- a/PlayWall/src/de/tobias/playpad/Strings.java +++ b/PlayWall/src/de/tobias/playpad/Strings.java @@ -61,11 +61,11 @@ public class Strings { public static final String UI_Window_Settings_Player_Title = "UI.Window.Settings.Player.Title"; public static final String UI_Window_Settings_Audio_Title = "UI.Window.Settings.Audio.Title"; public static final String UI_Window_Settings_Updates_Title = "UI.Window.Settings.Updates.Title"; + public static final String UI_Window_Settings_Keys_Title = "UI.Window.Settings.Keys.Title"; - // UI - Dialogs - DragAndDrop - public static final String UI_Dialog_DragAndDrop_Header = "UI.Dialog.DragAndDrop.Header"; - public static final String UI_Dialog_DragAndDrop_Content = "UI.Dialog.DragAndDrop.Content"; - public static final String UI_Dialog_DragAndDrop_Button = "UI.Dialog.DragAndDrop.Button"; + // UI - Settings - Keys + public static final String UI_Settings_Keys_Conflict_Header = "UI.Settings.Keys.Conflict.Header"; + public static final String UI_Settings_Keys_Conflict_Content = "UI.Settings.Keys.Conflict.Content"; // UI - Dialog - NewProfile public static final String UI_Dialog_NewProfile_Content = "UI.Dialog.NewProfile.Content"; @@ -169,9 +169,9 @@ public class Strings { public static final String Info_Mapper_PressKey = "Info.Mapper.PressKey"; // UI - Settings - Aler - + public static final String UI_Settings_Alert_NewKeyShortcut_Text = "UI.Settings.Alert.NewKeyShortcut.Text"; - + // UI - Window - PadSettings public static final String UI_Window_PadSettings_General_Title = "UI.Window.PadSettings.General.Title"; public static final String UI_Window_PadSettings_Player_Title = "UI.Window.PadSettings.Player.Title"; @@ -228,4 +228,13 @@ public class Strings { // Drag and Drop Mode public static final String DnDMode_Move = "DnDMode.Move"; public static final String DnDMode_Replace = "DnDMode.Replace"; + + // Main Layout + public static final String MainLayout_Desktop = "MainLayout.Desktop"; + public static final String MainLayout_Touch = "MainLayout.Touch"; + + // Search + public static final String Search_Button="Search.Button"; + public static final String Search_Placeholder="Search.Placeholder"; + public static final String Search_Alert_NoMatches = "Search.Alert.NoMatches"; } diff --git a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java index 64b3de3e..2da8971e 100644 --- a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java +++ b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java @@ -34,7 +34,7 @@ import javazoom.jl.decoder.JavaLayerException; public class ClipAudioHandler extends AudioHandler { - // TODO Change names + public static final String TYPE = "clip"; public static final String NAME = "Clip (Experimental)"; private static final String MP3 = "mp3"; @@ -84,7 +84,9 @@ public class ClipAudioHandler extends AudioHandler { } Thread.sleep(SLEEP_TIME_POSITION); - } catch (InterruptedException e) {} catch (ConcurrentModificationException e) {} catch (Exception e) { + } catch (InterruptedException e) { + } catch (ConcurrentModificationException e) { + } catch (Exception e) { e.printStackTrace(); } } diff --git a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java index e78e6895..bb004a44 100644 --- a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java @@ -1,7 +1,7 @@ package de.tobias.playpad.audio; import de.tobias.playpad.pad.conntent.PadContent; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import de.tobias.playpad.viewcontroller.audio.ClipSettingsViewController; public class ClipAudioHandlerConnect extends AudioHandlerConnect implements AutoCloseable { @@ -12,10 +12,15 @@ public class ClipAudioHandlerConnect extends AudioHandlerConnect implements Auto } @Override - public AudioTypeViewController getAudioViewController() { + public AudioHandlerViewController getAudioHandlerSettingsViewController() { return new ClipSettingsViewController(); } - + + @Override + public String getType() { + return ClipAudioHandler.TYPE; + } + @Override public void close() throws Exception { TinyAudioHandler.shutdown(); diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java index 4792e37a..d961972a 100644 --- a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java +++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java @@ -18,6 +18,7 @@ import javafx.util.Duration; public class JavaFXAudioHandler extends AudioHandler implements Equalizable { + public static final String TYPE = "JavaFx"; public static final String NAME = "Java FX Media"; private Media media; diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java index 9a5e3fb8..baca001b 100644 --- a/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java @@ -1,7 +1,7 @@ package de.tobias.playpad.audio; import de.tobias.playpad.pad.conntent.PadContent; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; public class JavaFXHandlerConnect extends AudioHandlerConnect { @@ -11,7 +11,12 @@ public class JavaFXHandlerConnect extends AudioHandlerConnect { } @Override - public AudioTypeViewController getAudioViewController() { + public AudioHandlerViewController getAudioHandlerSettingsViewController() { return null; } + + @Override + public String getType() { + return JavaFXAudioHandler.TYPE; + } } diff --git a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java index 7bf652f8..8c412a0e 100644 --- a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java +++ b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java @@ -40,8 +40,10 @@ public class TinyAudioHandler extends AudioHandler { public static final String SOUND_CARD = "SoundCard"; + public static final String TYPE = "TinyAudio"; public static final String NAME = "Java Audiostream"; private static final String MP3 = "mp3"; + private static final int SLEEP_TIME_POSITION = 50; private static ExecutorService executorService; diff --git a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java index c8e8904c..cf8388f1 100644 --- a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java @@ -1,7 +1,7 @@ package de.tobias.playpad.audio; import de.tobias.playpad.pad.conntent.PadContent; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import de.tobias.playpad.viewcontroller.audio.TinySoundSettingsViewController; public class TinyAudioHandlerConnect extends AudioHandlerConnect implements AutoCloseable { @@ -12,10 +12,15 @@ public class TinyAudioHandlerConnect extends AudioHandlerConnect implements Auto } @Override - public AudioTypeViewController getAudioViewController() { + public AudioHandlerViewController getAudioHandlerSettingsViewController() { return new TinySoundSettingsViewController(); } + @Override + public String getType() { + return TinyAudioHandler.TYPE; + } + @Override public void close() throws Exception { TinyAudioHandler.shutdown(); diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java index e39b0662..fa69b00d 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java @@ -2,13 +2,24 @@ package de.tobias.playpad.layout.desktop; import java.util.Stack; +import de.tobias.playpad.Strings; import de.tobias.playpad.pad.view.IPadViewV2; import de.tobias.playpad.view.main.MainLayoutConnect; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController; +import de.tobias.utils.util.Localization; +/** + * Desktop Implmentierung des Main Layouts. + * + * @author tobias + * + * @since 5.1.0 + */ public class DesktopMainLayoutConnect implements MainLayoutConnect { + private static final String TYPE = "Desktop"; + private DesktopMenuToolbarViewController desktopMenuToolbarViewController; private Stack<IPadViewV2> recyclingStack; @@ -19,12 +30,12 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect { @Override public String getType() { - return "Desktop"; + return TYPE; } @Override public String name() { - return "Desktop Modus"; // TODO Localize + return Localization.getString(Strings.MainLayout_Desktop); } @Override diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index adc1a04d..837bd019 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -583,9 +583,9 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro @FXML void searchPadHandler(ActionEvent event) { TextField field = TextFields.createClearableTextField(); - field.setPromptText("Suche"); // TODO i18n + field.setPromptText(Localization.getString(Strings.Search_Placeholder)); - Button button = new Button("Suchen"); // TODO i18n + Button button = new Button(Localization.getString(Strings.Search_Button)); button.setOnAction(new DesktopSearchController(field, this)); HBox box = new HBox(14, field, button); diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopSearchController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopSearchController.java index dbe3475f..ddeb4138 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopSearchController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopSearchController.java @@ -2,10 +2,12 @@ package de.tobias.playpad.layout.desktop; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; +import de.tobias.playpad.Strings; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.project.Project; import de.tobias.utils.ui.Alertable; +import de.tobias.utils.util.Localization; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.TextField; @@ -45,7 +47,7 @@ public class DesktopSearchController implements EventHandler<ActionEvent> { } } } - alertable.showInfoMessage("Keine weiteren Treffer gefunden.", PlayPadMain.stageIcon.orElse(null)); // TODO i18n + alertable.showInfoMessage(Localization.getString(Strings.Search_Alert_NoMatches), PlayPadMain.stageIcon.orElse(null)); currentIndex = 0; } } diff --git a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java index be191f56..a82f250d 100644 --- a/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java +++ b/PlayWall/src/de/tobias/playpad/layout/touch/TouchMainLayoutConnect.java @@ -2,13 +2,24 @@ package de.tobias.playpad.layout.touch; import java.util.Stack; +import de.tobias.playpad.Strings; import de.tobias.playpad.pad.view.IPadViewV2; import de.tobias.playpad.view.main.MainLayoutConnect; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.main.MenuToolbarViewController; +import de.tobias.utils.util.Localization; +/** + * Touch Implementierung des Main Layout. + * + * @author tobias + * + * @since 5.1.0 + */ public class TouchMainLayoutConnect implements MainLayoutConnect { + private static final String TYPE = "Touch"; + private TouchMenuToolbarViewController touchMainLayoutConnect; private Stack<IPadViewV2> recyclingStack; @@ -16,15 +27,15 @@ public class TouchMainLayoutConnect implements MainLayoutConnect { public TouchMainLayoutConnect() { recyclingStack = new Stack<>(); } - + @Override public String getType() { - return "Touch"; + return TYPE; } @Override public String name() { - return "Touch Modus"; // TODO Localize + return Localization.getString(Strings.MainLayout_Touch); } @Override diff --git a/PlayWall/src/de/tobias/playpad/view/HelpMenuItem.java b/PlayWall/src/de/tobias/playpad/view/HelpMenuItem.java index bf8e4f9a..1059be7f 100644 --- a/PlayWall/src/de/tobias/playpad/view/HelpMenuItem.java +++ b/PlayWall/src/de/tobias/playpad/view/HelpMenuItem.java @@ -26,7 +26,7 @@ public class HelpMenuItem extends CustomMenuItem implements ChangeListener<Strin setHideOnClick(false); - Label label = new Label("Suchen nach (Beta): "); // TODO i18n + Label label = new Label("Suchen nach (Beta): "); // TODO BETA i18n TextField textfield = new TextField(); textfield.textProperty().addListener(this); diff --git a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java index 5b293810..5ae0d9f6 100644 --- a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java +++ b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java @@ -62,7 +62,15 @@ public class MapperOverviewViewController implements IMapperOverviewViewControll Set<String> types = registry.getTypes(); types.stream().sorted().forEach(item -> { - Button button = new Button(item.toString(), new FontIcon(FontAwesomeType.PLUS_CIRCLE)); + String name = item; + try { + MapperConnect connect = registry.getComponent(item); + name = connect.toString(); + } catch (NoSuchComponentException e) { + // TODO Error Handling + e.printStackTrace(); + } + Button button = new Button(name, new FontIcon(FontAwesomeType.PLUS_CIRCLE)); button.setContentDisplay(ContentDisplay.TOP); button.setPrefWidth(150); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/audio/ClipSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/audio/ClipSettingsViewController.java index 624d6c55..1cf62dd4 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/audio/ClipSettingsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/audio/ClipSettingsViewController.java @@ -15,7 +15,7 @@ import javax.sound.sampled.UnsupportedAudioFileException; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.audio.TinyAudioHandler; import de.tobias.playpad.settings.Profile; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import de.tobias.utils.ui.icon.FontAwesomeType; import de.tobias.utils.ui.icon.FontIcon; import de.tobias.utils.util.Worker; @@ -27,7 +27,7 @@ import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.util.Callback; -public class ClipSettingsViewController extends AudioTypeViewController implements Callback<ListView<Info>, ListCell<Info>> { +public class ClipSettingsViewController extends AudioHandlerViewController implements Callback<ListView<Info>, ListCell<Info>> { @FXML private ComboBox<Info> soundCardComboBox; @FXML private Button testButton; diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/audio/TinySoundSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/audio/TinySoundSettingsViewController.java index 4429ba72..799ed153 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/audio/TinySoundSettingsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/audio/TinySoundSettingsViewController.java @@ -15,7 +15,7 @@ import javax.sound.sampled.UnsupportedAudioFileException; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.audio.TinyAudioHandler; import de.tobias.playpad.settings.Profile; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import de.tobias.utils.ui.icon.FontAwesomeType; import de.tobias.utils.ui.icon.FontIcon; import de.tobias.utils.util.Worker; @@ -27,7 +27,7 @@ import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.util.Callback; -public class TinySoundSettingsViewController extends AudioTypeViewController implements Callback<ListView<Info>, ListCell<Info>> { +public class TinySoundSettingsViewController extends AudioHandlerViewController implements Callback<ListView<Info>, ListCell<Info>> { @FXML private ComboBox<Info> soundCardComboBox; @FXML private Button testButton; diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/UpdaterDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/UpdaterDialog.java index 6143bc83..bdb1365e 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/UpdaterDialog.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/UpdaterDialog.java @@ -1,8 +1,6 @@ package de.tobias.playpad.viewcontroller.dialog; import de.tobias.playpad.PlayPadMain; -import de.tobias.playpad.Strings; -import de.tobias.utils.util.Localization; import javafx.scene.control.Dialog; import javafx.scene.control.Label; import javafx.scene.image.ImageView; @@ -13,7 +11,6 @@ import javafx.stage.Window; public class UpdaterDialog extends Dialog<Void> { public UpdaterDialog(Window owner) { - setHeaderText(Localization.getString(Strings.UI_Dialog_DragAndDrop_Header)); setGraphic(new ImageView("org/controlsfx/dialog/dialog-information.png")); Label textLabel = new Label( diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysConflictDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysConflictDialog.java new file mode 100644 index 00000000..c0df4125 --- /dev/null +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysConflictDialog.java @@ -0,0 +1,33 @@ +package de.tobias.playpad.viewcontroller.option.global; + +import java.util.List; + +import de.tobias.playpad.PlayPadMain; +import de.tobias.playpad.Strings; +import de.tobias.playpad.settings.keys.Key; +import de.tobias.playpad.settings.keys.KeyCollection; +import de.tobias.utils.util.Localization; +import javafx.scene.control.Alert; +import javafx.stage.Modality; +import javafx.stage.Stage; + +public class KeysConflictDialog extends Alert { + + public KeysConflictDialog(List<Key> conflicts, KeyCollection collection) { + super(AlertType.ERROR); + + String keys = ""; + for (int i = 0; i < conflicts.size(); i++) { + keys += "- " + collection.getName(conflicts.get(i).getId()); + if (i + 1 < conflicts.size()) { + keys += "\n"; + } + } + setHeaderText(Localization.getString(Strings.UI_Settings_Keys_Conflict_Header)); + setContentText(Localization.getString(Strings.UI_Settings_Keys_Conflict_Content, keys)); + + Stage dialogStage = (Stage) getDialogPane().getScene().getWindow(); + PlayPadMain.stageIcon.ifPresent(dialogStage.getIcons()::add); + initModality(Modality.WINDOW_MODAL); + } +} diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java index c6132c91..db631058 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java @@ -6,6 +6,7 @@ import de.tobias.playpad.Strings; import de.tobias.playpad.project.Project; import de.tobias.playpad.settings.GlobalSettings; import de.tobias.playpad.settings.keys.Key; +import de.tobias.playpad.settings.keys.KeyCollection; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.GlobalSettingsTabViewController; import de.tobias.utils.util.Localization; @@ -28,6 +29,7 @@ import javafx.scene.control.TableRow; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.input.KeyCode; +import javafx.stage.Modality; import javafx.stage.Stage; public class KeysTabViewController extends GlobalSettingsTabViewController { @@ -134,20 +136,27 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { Key newKey = new Key(currentKey.getId(), key, ev.isControlDown(), ev.isAltDown(), ev.isMetaDown(), ev.isShiftDown()); GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings(); - boolean conflict = globalSettings.getKeyCollection().keysConflict(newKey); + KeyCollection keyCollection = globalSettings.getKeyCollection(); + + boolean conflict = keyCollection.keysConflict(newKey); if (!conflict) { - globalSettings.getKeyCollection().editKey(newKey); + keyCollection.editKey(newKey); shortcutLabel.setText(currentKey.toString()); Platform.runLater(() -> ((Stage) scene.getWindow()).close()); } else { - showErrorMessage("Konflikt"); // TODO Localize + KeysConflictDialog dialog = new KeysConflictDialog(keyCollection.getConflicts(newKey), keyCollection); + dialog.initOwner(getStage()); + dialog.showAndWait(); } } }); alert.getButtonTypes().add(ButtonType.CANCEL); alert.initOwner(getWindow()); + alert.initModality(Modality.WINDOW_MODAL); + Stage alertStage = (Stage) alert.getDialogPane().getScene().getWindow(); + PlayPadMain.stageIcon.ifPresent(alertStage.getIcons()::add); alert.showAndWait(); } @@ -179,8 +188,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { @Override public String name() { - // TODO Auto-generated method stub - return "Keyboard (I18N)"; + return Localization.getString(Strings.UI_Window_Settings_Keys_Title); } private void search() { diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java index 7faa367a..1972fd9b 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java @@ -8,7 +8,7 @@ import de.tobias.playpad.project.Project; import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.settings.Profile; import de.tobias.playpad.settings.ProfileSettings; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import de.tobias.playpad.viewcontroller.main.IMainViewController; import de.tobias.playpad.viewcontroller.option.ProfileSettingsTabViewController; import de.tobias.utils.util.Localization; @@ -22,7 +22,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController { // Audio @FXML private ComboBox<String> audioTypeComboBox; @FXML private AnchorPane audioUserInfoSettings; - private AudioTypeViewController audioViewController; + private AudioHandlerViewController audioViewController; private boolean changeAudioSettings; public AudioTabViewController(boolean playerActive) { @@ -63,7 +63,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController { try { AudioRegistry audioHandlerRegistry = PlayPadPlugin.getRegistryCollection().getAudioHandlers(); - audioViewController = audioHandlerRegistry.getComponent(classID).getAudioViewController(); + audioViewController = audioHandlerRegistry.getComponent(classID).getAudioHandlerSettingsViewController(); if (audioViewController != null) { audioUserInfoSettings.getChildren().add(audioViewController.getParent()); diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java index 7b0f8aeb..dee8a0e1 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java @@ -13,7 +13,6 @@ public abstract class AudioHandler { private PadContent content; public AudioHandler(PadContent content) { - super(); this.content = content; } diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java index 5a35082e..0d280a36 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java @@ -1,12 +1,38 @@ package de.tobias.playpad.audio; import de.tobias.playpad.pad.conntent.PadContent; -import de.tobias.playpad.viewcontroller.AudioTypeViewController; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; +/** + * Audio Handler Interface zur Verwaltung einer AudioHandler Implementierung. Für Aktionen beim schließen des + * Programmes, muss der AudioHandler AutoClosable implementieren. + * + * @author tobias + * + * @since 5.0.0 + */ public abstract class AudioHandlerConnect { + /** + * Erstellt für eine Kachel ein neunes AudioInterface + * + * @param content + * Content des Pads + * @return AudioHandler + */ public abstract AudioHandler createAudioHandler(PadContent content); - public abstract AudioTypeViewController getAudioViewController(); + /** + * Gibt den Settings View Controller für die Audio Schnittstelle zurück.s + * + * @return neuer ViewContoller + */ + public abstract AudioHandlerViewController getAudioHandlerSettingsViewController(); + /** + * Gibt den Type des AudioHandlers zurück. + * + * @return Type + */ + public abstract String getType(); } diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java index f47a1e5f..85518577 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java @@ -1,5 +1,6 @@ package de.tobias.playpad.settings.keys; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -73,6 +74,16 @@ public class KeyCollection { } return false; } + + public List<Key> getConflicts(Key key) { + List<Key> conflicts = new ArrayList<>(); + for (Key k : keys.values()) { + if (k.getKeyCode().equals(key.getKeyCode())) { + conflicts.add(k); + } + } + return conflicts; + } private static final String KEY_ELEMENT = "Key"; diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioTypeViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioHandlerViewController.java similarity index 80% rename from PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioTypeViewController.java rename to PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioHandlerViewController.java index ee065a8d..ba5e4d0a 100644 --- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioTypeViewController.java +++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/AudioHandlerViewController.java @@ -12,7 +12,7 @@ import de.tobias.utils.ui.ContentViewController; * * @see AudioHandlerConnect */ -public abstract class AudioTypeViewController extends ContentViewController { +public abstract class AudioHandlerViewController extends ContentViewController { /** * Neuer ViewController. @@ -24,7 +24,7 @@ public abstract class AudioTypeViewController extends ContentViewController { * @param localization * Localization */ - public AudioTypeViewController(String name, String path, ResourceBundle localization) { + public AudioHandlerViewController(String name, String path, ResourceBundle localization) { super(name, path, localization); } -- GitLab