| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2015 - ROLI Ltd.
 - 
 -    Permission is granted to use this software under the terms of either:
 -    a) the GPL v2 (or any later version)
 -    b) the Affero GPL v3
 - 
 -    Details of these licenses can be found 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.juce.com for more information.
 - 
 -   ==============================================================================
 - */
 - 
 - class SourceFileItem   : public ProjectTreeItemBase
 - {
 - public:
 -     SourceFileItem (const Project::Item& projectItem)
 -         : ProjectTreeItemBase (projectItem)
 -     {
 -     }
 - 
 -     bool acceptsFileDrop (const StringArray&) const override             { return false; }
 -     bool acceptsDragItems (const OwnedArray <Project::Item>&) override   { return false; }
 - 
 -     String getDisplayName() const override
 -     {
 -         return getFile().getFileName();
 -     }
 - 
 -     static File findCorrespondingHeaderOrCpp (const File& f)
 -     {
 -         if (f.hasFileExtension (sourceFileExtensions))  return f.withFileExtension (".h");
 -         if (f.hasFileExtension (headerFileExtensions))  return f.withFileExtension (".cpp");
 - 
 -         return File();
 -     }
 - 
 -     void setName (const String& newName) override
 -     {
 -         if (newName != File::createLegalFileName (newName))
 -         {
 -             AlertWindow::showMessageBox (AlertWindow::WarningIcon, "File Rename",
 -                                          "That filename contained some illegal characters!");
 -             triggerAsyncRename (item);
 -             return;
 -         }
 - 
 -         File oldFile (getFile());
 -         File newFile (oldFile.getSiblingFile (newName));
 -         File correspondingFile (findCorrespondingHeaderOrCpp (oldFile));
 - 
 -         if (correspondingFile.exists() && newFile.hasFileExtension (oldFile.getFileExtension()))
 -         {
 -             Project::Item correspondingItem (item.project.getMainGroup().findItemForFile (correspondingFile));
 - 
 -             if (correspondingItem.isValid())
 -             {
 -                 if (AlertWindow::showOkCancelBox (AlertWindow::NoIcon, "File Rename",
 -                                                   "Do you also want to rename the corresponding file \"" + correspondingFile.getFileName()
 -                                                     + "\" to match?"))
 -                 {
 -                     if (! item.renameFile (newFile))
 -                     {
 -                         AlertWindow::showMessageBox (AlertWindow::WarningIcon, "File Rename",
 -                                                      "Failed to rename \"" + oldFile.getFullPathName() + "\"!\n\nCheck your file permissions!");
 -                         return;
 -                     }
 - 
 -                     if (! correspondingItem.renameFile (newFile.withFileExtension (correspondingFile.getFileExtension())))
 -                     {
 -                         AlertWindow::showMessageBox (AlertWindow::WarningIcon, "File Rename",
 -                                                      "Failed to rename \"" + correspondingFile.getFullPathName() + "\"!\n\nCheck your file permissions!");
 -                     }
 -                 }
 -             }
 -         }
 - 
 -         if (! item.renameFile (newFile))
 -         {
 -             AlertWindow::showMessageBox (AlertWindow::WarningIcon, "File Rename",
 -                                          "Failed to rename the file!\n\nCheck your file permissions!");
 -         }
 -     }
 - 
 -     ProjectTreeItemBase* createSubItem (const Project::Item&) override
 -     {
 -         jassertfalse;
 -         return nullptr;
 -     }
 - 
 -     void showDocument() override
 -     {
 -         const File f (getFile());
 - 
 -         if (f.exists())
 -             if (ProjectContentComponent* pcc = getProjectContentComponent())
 -                 pcc->showEditorForFile (f, false);
 -     }
 - 
 -     void showPopupMenu() override
 -     {
 -         PopupMenu m;
 - 
 -         if (GroupItem* parentGroup = dynamic_cast<GroupItem*> (getParentProjectItem()))
 -         {
 -             parentGroup->addCreateFileMenuItems (m);
 -             m.addSeparator();
 -         }
 - 
 -         m.addItem (1, "Open in external editor");
 -         m.addItem (2,
 -                      #if JUCE_MAC
 -                       "Reveal in Finder");
 -                      #else
 -                       "Reveal in Explorer");
 -                      #endif
 - 
 -         m.addItem (4, "Rename File...");
 -         m.addSeparator();
 -         m.addItem (3, "Delete");
 - 
 -         launchPopupMenu (m);
 -     }
 - 
 -     void handlePopupMenuResult (int resultCode) override
 -     {
 -         switch (resultCode)
 -         {
 -             case 1:     getFile().startAsProcess(); break;
 -             case 2:     revealInFinder(); break;
 -             case 3:     deleteAllSelectedItems(); break;
 -             case 4:     triggerAsyncRename (item); break;
 - 
 -             default:
 -                 if (GroupItem* parentGroup = dynamic_cast<GroupItem*> (getParentProjectItem()))
 -                     parentGroup->processCreateFileMenuItem (resultCode);
 - 
 -                 break;
 -         }
 -     }
 - };
 
 
  |