/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-11 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ #include "jucer_DocumentEditorComponent.h" #include "../Project/jucer_ProjectContentComponent.h" //============================================================================== DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_) : document (document_) { OpenDocumentManager::getInstance()->addListener (this); } DocumentEditorComponent::~DocumentEditorComponent() { OpenDocumentManager::getInstance()->removeListener (this); } void DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Document* closingDoc) { if (document == closingDoc) { jassert (document != nullptr); ProjectContentComponent* pcc = findParentComponentOfClass ((ProjectContentComponent*) 0); if (pcc != nullptr) { pcc->hideDocument (document); return; } jassertfalse } } ApplicationCommandTarget* DocumentEditorComponent::getNextCommandTarget() { return findFirstTargetParentComponent(); } void DocumentEditorComponent::getAllCommands (Array & commands) { const CommandID ids[] = { CommandIDs::saveDocument, CommandIDs::saveDocumentAs, CommandIDs::closeDocument }; commands.addArray (ids, numElementsInArray (ids)); } void DocumentEditorComponent::getCommandInfo (const CommandID commandID, ApplicationCommandInfo& result) { result.setActive (document != nullptr); String name; if (document != nullptr) name = " '" + document->getName().substring (0, 32) + "'"; switch (commandID) { case CommandIDs::saveDocument: result.setInfo ("Save" + name, "Saves the current document", CommandCategories::general, 0); result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::commandModifier, 0)); break; case CommandIDs::saveDocumentAs: result.setInfo ("Save" + name + " As...", "Saves the current document to a different filename", CommandCategories::general, 0); result.setActive (document != nullptr && document->canSaveAs()); result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)); break; case CommandIDs::closeDocument: result.setInfo ("Close" + name, "Closes the current document", CommandCategories::general, 0); #if JUCE_MAC result.defaultKeypresses.add (KeyPress ('w', ModifierKeys::commandModifier | ModifierKeys::ctrlModifier, 0)); #else result.defaultKeypresses.add (KeyPress ('w', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)); #endif break; default: break; } } bool DocumentEditorComponent::perform (const InvocationInfo& info) { switch (info.commandID) { case CommandIDs::saveDocument: document->save(); return true; case CommandIDs::saveDocumentAs: document->saveAs(); return true; case CommandIDs::closeDocument: OpenDocumentManager::getInstance()->closeDocument (document, true); return true; default: break; } return false; }