blob: 410af354aab059ef09ac2cf1c5b0aae32c38c3a1 [file] [log] [blame]
/*****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.cayenne.modeler.layout;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.jensd.fx.glyphs.GlyphsDude;
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Tooltip;
public class MainToolBarLayout
extends AbstractViewLayout
{
private static final Logger LOGGER = LoggerFactory.getLogger(MainToolBarLayout.class);
@FXML
private Button newButton, openButton, saveButton;
@FXML
private Button removeButton;
@FXML
private Button cutButton, copyButton, pasteButton;
@FXML
private Button undoButton, redoButton;
@FXML
private Button dataMapButton, dataNodeButton;
private final boolean showLabels = false;
public MainToolBarLayout(final MainWindowSupport parentComponent) throws IOException
{
super(parentComponent, "/layouts/MainToolBarLayout.fxml");
}
@Override
public void initializeLayout()
{
super.initializeLayout();
setToolBarValues();
}
private void setToolBarValues()
{
setIcons();
setLabels();
setToolTips();
setState();
}
private void setIcons()
{
newButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.PLUS_SQUARE, "16px"));
openButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.FOLDER_OPEN, "16px"));
saveButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.FLOPPY_ALT, "16px"));
removeButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.TRASH, "16px"));
cutButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.CUT, "16px"));
copyButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.COPY, "16px"));
pasteButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.PASTE, "16px"));
undoButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.UNDO, "16px"));
redoButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.REPEAT, "16px"));
dataMapButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.CUBES, "16px"));
dataNodeButton.setGraphic(GlyphsDude.createIcon(FontAwesomeIcon.SERVER, "16px"));
}
private void setToolTips()
{
newButton.setTooltip(new Tooltip("Create a new Cayenne Model project."));
openButton.setTooltip(new Tooltip("Open an existing Cayenne Model project."));
saveButton.setTooltip(new Tooltip("Save this Cayenne Model project."));
removeButton.setTooltip(new Tooltip("Remove this item.")); // FIXME: Should be dynamic.
cutButton.setTooltip(new Tooltip("Cut this item to the clipboard.")); // FIXME: Should be dynamic.
copyButton.setTooltip(new Tooltip("Copy this item to the clipboard.")); // FIXME: Should be dynamic.
pasteButton.setTooltip(new Tooltip("Paste this item from the clipboard.")); // FIXME: Should be dynamic.
undoButton.setTooltip(new Tooltip("Undo.")); // FIXME: Should be dynamic.
redoButton.setTooltip(new Tooltip("Redo.")); // FIXME: Should be dynamic.
dataMapButton.setTooltip(new Tooltip("Create a new Data Map to hold Java and Database definitions."));
dataNodeButton.setTooltip(new Tooltip("Create a new Data Node to hold database connection settings."));
}
private void setLabels()
{
if (showLabels)
{
newButton.setText("New");
openButton.setText("Open");
saveButton.setText("Save");
removeButton.setText("Delete"); // FIXME: Should be dynamic.
cutButton.setText("Cut"); // FIXME: Should be dynamic.
copyButton.setText("Copy"); // FIXME: Should be dynamic.
pasteButton.setText("Paste"); // FIXME: Should be dynamic.
undoButton.setText("Undo"); // FIXME: Should be dynamic.
redoButton.setText("Redo"); // FIXME: Should be dynamic.
dataMapButton.setText("New Data Map");
dataNodeButton.setText("New Data Node");
}
else
{
newButton.setText(null);
openButton.setText(null);
saveButton.setText(null);
removeButton.setText(null);
cutButton.setText(null);
copyButton.setText(null);
pasteButton.setText(null);
undoButton.setText(null);
redoButton.setText(null);
dataMapButton.setText(null);
dataNodeButton.setText(null);
}
}
private void setState()
{
newButton.setDisable(false); // Can always create a new Cayenne Project.
openButton.setDisable(false); // Can always open an existing Cayenne Project.
saveButton.setDisable(true); // TODO: Bind to main window's dirty state.
removeButton.setDisable(true);
cutButton.setDisable(true);
copyButton.setDisable(true);
pasteButton.setDisable(true);
undoButton.setDisable(true);
redoButton.setDisable(true);
dataMapButton.setDisable(true);
dataNodeButton.setDisable(true);
}
public void onNewButtonClicked()
{
LOGGER.debug("new!");
}
}