/*
* Copyright 2008-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package editor;
import griffon.core.artifact.GriffonController;
import griffon.inject.MVCMember;
import griffon.metadata.ArtifactProviderFor;
import griffon.transform.Threading;
import griffon.util.CollectionUtils;
import org.codehaus.griffon.runtime.core.artifact.AbstractGriffonController;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.File;
import static griffon.util.GriffonNameUtils.isBlank;
@ArtifactProviderFor(GriffonController.class)
public class ContainerController extends AbstractGriffonController {
@MVCMember @Nonnull
private ContainerModel model;
@MVCMember @Nonnull
private ContainerView view;
@Threading(Threading.Policy.SKIP)
public void open() {
File file = view.selectFile();
if (file != null) {
String mvcIdentifier = file.getName() + "-" + System.currentTimeMillis();
createMVC("editor", mvcIdentifier, CollectionUtils.<String, Object>map()
.e("document", new Document(file, file.getName()))
.e("tabName", file.getName()));
}
}
public void save() {
EditorController controller = resolveEditorController();
if (controller != null) {
controller.saveFile();
}
}
public void close() {
EditorController controller = resolveEditorController();
if (controller != null) {
controller.closeFile();
}
}
public void quit() {
getApplication().shutdown();
}
@Nullable
private EditorController resolveEditorController() {
if (!isBlank(model.getMvcIdentifier())) {
return getApplication().getMvcGroupManager()
.findController(model.getMvcIdentifier(), EditorController.class);
}
return null;
}
}