| 
001 /*002  * Copyright 2008-2015 the original author or authors.
 003  *
 004  * Licensed under the Apache License, Version 2.0 (the "License");
 005  * you may not use this file except in compliance with the License.
 006  * You may obtain a copy of the License at
 007  *
 008  *     http://www.apache.org/licenses/LICENSE-2.0
 009  *
 010  * Unless required by applicable law or agreed to in writing, software
 011  * distributed under the License is distributed on an "AS IS" BASIS,
 012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 013  * See the License for the specific language governing permissions and
 014  * limitations under the License.
 015  */
 016 package org.codehaus.griffon.runtime.swing.controller;
 017
 018 import griffon.core.GriffonApplication;
 019 import griffon.core.artifact.GriffonController;
 020 import griffon.core.controller.Action;
 021 import org.codehaus.griffon.runtime.core.controller.AbstractActionManager;
 022 import org.slf4j.Logger;
 023 import org.slf4j.LoggerFactory;
 024
 025 import javax.annotation.Nonnull;
 026 import javax.inject.Inject;
 027
 028 import static griffon.util.GriffonApplicationUtils.isMacOSX;
 029 import static griffon.util.GriffonNameUtils.isBlank;
 030 import static griffon.util.TypeUtils.castToBoolean;
 031
 032 /**
 033  * @author Andres Almiray
 034  * @since 2.0.0
 035  */
 036 public class SwingActionManager extends AbstractActionManager {
 037     private static final Logger LOG = LoggerFactory.getLogger(SwingActionManager.class);
 038
 039     @Inject
 040     public SwingActionManager(@Nonnull GriffonApplication application) {
 041         super(application);
 042     }
 043
 044     @Override
 045     protected void doConfigureAction(@Nonnull Action action, @Nonnull GriffonController controller, @Nonnull String normalizeNamed, @Nonnull String keyPrefix) {
 046         SwingGriffonControllerAction swingAction = (SwingGriffonControllerAction) action;
 047
 048         String rsAccelerator = msg(keyPrefix, normalizeNamed, "accelerator", "");
 049         if (!isBlank(rsAccelerator)) {
 050             //noinspection ConstantConditions
 051             if (!isMacOSX() && rsAccelerator.contains("meta") && !rsAccelerator.contains("ctrl")) {
 052                 rsAccelerator = rsAccelerator.replace("meta", "ctrl");
 053             }
 054             if (LOG.isTraceEnabled()) {
 055                 LOG.trace(keyPrefix + normalizeNamed + ".accelerator = " + rsAccelerator);
 056             }
 057             swingAction.setAccelerator(rsAccelerator);
 058         }
 059
 060         String rsCommand = msg(keyPrefix, normalizeNamed, "command", "");
 061         if (!isBlank(rsCommand)) {
 062             if (LOG.isTraceEnabled()) {
 063                 LOG.trace(keyPrefix + normalizeNamed + ".command = " + rsCommand);
 064             }
 065             swingAction.setCommand(rsCommand);
 066         }
 067
 068         String rsShortDescription = msg(keyPrefix, normalizeNamed, "short_description", "");
 069         if (!isBlank(rsShortDescription)) {
 070             if (LOG.isTraceEnabled()) {
 071                 LOG.trace(keyPrefix + normalizeNamed + ".short_description = " + rsShortDescription);
 072             }
 073             swingAction.setShortDescription(rsShortDescription);
 074         }
 075
 076         String rsLongDescription = msg(keyPrefix, normalizeNamed, "long_description", "");
 077         if (!isBlank(rsLongDescription)) {
 078             if (LOG.isTraceEnabled()) {
 079                 LOG.trace(keyPrefix + normalizeNamed + ".long_description = " + rsLongDescription);
 080             }
 081             swingAction.setLongDescription(rsLongDescription);
 082         }
 083
 084         String rsMnemonic = msg(keyPrefix, normalizeNamed, "mnemonic", "");
 085         if (!isBlank(rsMnemonic)) {
 086             if (LOG.isTraceEnabled()) {
 087                 LOG.trace(keyPrefix + normalizeNamed + ".mnemonic = " + rsMnemonic);
 088             }
 089             swingAction.setMnemonic(rsMnemonic);
 090         }
 091
 092         String rsSmallIcon = msg(keyPrefix, normalizeNamed, "small_icon", "");
 093         if (!isBlank(rsSmallIcon)) {
 094             if (LOG.isTraceEnabled()) {
 095                 LOG.trace(keyPrefix + normalizeNamed + ".small_icon = " + rsSmallIcon);
 096             }
 097             swingAction.setSmallIcon(rsSmallIcon);
 098         }
 099
 100         String rsLargeIcon = msg(keyPrefix, normalizeNamed, "large_icon", "");
 101         if (!isBlank(rsLargeIcon)) {
 102             if (LOG.isTraceEnabled()) {
 103                 LOG.trace(keyPrefix + normalizeNamed + ".large_icon = " + rsLargeIcon);
 104             }
 105             swingAction.setLargeIcon(rsLargeIcon);
 106         }
 107
 108         String rsEnabled = msg(keyPrefix, normalizeNamed, "enabled", "true");
 109         if (!isBlank(rsEnabled)) {
 110             if (LOG.isTraceEnabled()) {
 111                 LOG.trace(keyPrefix + normalizeNamed + ".enabled = " + rsEnabled);
 112             }
 113             swingAction.setEnabled(castToBoolean(rsEnabled));
 114         }
 115
 116         String rsSelected = msg(keyPrefix, normalizeNamed, "selected", "false");
 117         if (!isBlank(rsSelected)) {
 118             if (LOG.isTraceEnabled()) {
 119                 LOG.trace(keyPrefix + normalizeNamed + ".selected = " + rsSelected);
 120             }
 121             swingAction.setSelected(castToBoolean(rsSelected));
 122         }
 123     }
 124
 125     @Nonnull
 126     @Override
 127     protected Action createControllerAction(@Nonnull GriffonController controller, @Nonnull String actionName) {
 128         return new SwingGriffonControllerAction(getUiThreadManager(), this, controller, actionName);
 129     }
 130 }
 |