aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Protobuf/Compilers/JavaCompiler.cs
blob: 2b0ff8c594f5c4f1e4fede2ecbbd341baa8728ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core.Helpers;
using Tango.Core.IO;
using Tango.Logging;

namespace Tango.Protobuf.Compilers
{
    /// <summary>
    /// Represents a protobuf Java Compiler.
    /// </summary>
    /// <seealso cref="Tango.Protobuf.ProtoCompiler" />
    public class JavaCompiler : ProtoCompiler
    {
        /// <summary>
        /// Gets the compiler language.
        /// </summary>
        public override CompilerLanguage Language => CompilerLanguage.Java;

        /// <summary>
        /// Gets the protobuf compiler CLI arguments (without input/output files!).
        /// </summary>
        /// <returns></returns>
        protected override string GetProtoArguments()
        {
            return "--java_out";
        }

        /// <summary>
        /// Gets a value indicating whether this compiler uses the default folder structure when generating code.
        /// </summary>
        public override bool UsesDefaultStructure => true;

        public override CompilerFolderResult CompileFolder(string sourceFolder, params string[] includeFolders)
        {
            var temp = TemporaryManager.Default.CreateFolder();
            PathHelper.CopyDirectory(sourceFolder, temp.Path, true);

            List<String> directories = Directory.GetDirectories(sourceFolder, "*", SearchOption.AllDirectories).Where(x => includeFolders == null || includeFolders.Length == 0 || includeFolders.Contains(Path.GetFileName(x))).ToList();

            foreach (var dir in Directory.GetDirectories(temp.Path))
            {
                if (!directories.Select(x => Path.GetFileName(x)).Contains(Path.GetFileName(dir)))
                {
                    Directory.Delete(dir, true);
                }
            }

            return base.CompileFolder(temp.Path);
        }
    }
}
; </Style> </UserControl.Resources> <Grid> <Grid> <Grid.RowDefinitions> <RowDefinition Height="79"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <Border Background="{StaticResource WhiteBrush100}"> <Border.Effect> <DropShadowEffect /> </Border.Effect> <Grid> <StackPanel Orientation="Horizontal"> <Button Margin="10 0 0 0" Height="50" Style="{StaticResource MaterialDesignFlatButton}" Foreground="{StaticResource DarkGrayBrush}" Command="{Binding NavigateToHomeCommand}" HorizontalContentAlignment="Left"> <StackPanel Orientation="Horizontal" > <materialDesign:PackIcon Kind="ArrowLeftBold" Width="20" Height="20" /> <TextBlock Margin="5 0 0 0" FontSize="16">BACK</TextBlock> </StackPanel> </Button> <Border Margin="10" Padding="5" BorderBrush="DimGray" BorderThickness="1" Background="{StaticResource Logging.Background}"> <StackPanel Orientation="Horizontal"> <materialDesign:PackIcon Kind="Calendar" Width="24" Height="24" VerticalAlignment="Bottom" Margin="0 0 0 5" /> <DatePicker x:Name="datePicker" DisplayDateStart="{Binding MinDate}" DisplayDateEnd="{Binding MaxDate}" CalendarStyle="{StaticResource HighlightDatePickerStyle}" SelectedDate="{Binding SelectedDate}" materialDesign:HintAssist.Hint="Pick Date" Margin="10 0 0 5" Width="200" VerticalAlignment="Bottom" FontSize="16"> </DatePicker> <ToggleButton VerticalAlignment="Bottom" Margin="20 0 0 5" IsChecked="{Binding IsRealTime}"></ToggleButton> <TextBlock VerticalAlignment="Center" Margin="10 17 0 0">Real-Time</TextBlock> </StackPanel> </Border> <Button Style="{StaticResource MaterialDesignFlatButton}" Command="{Binding ToggleRealTimePaused}" Padding="0" Height="50" Width="50" Foreground="{StaticResource DarkGrayBrush}" ToolTip="Pause/Resume Real-Time"> <materialDesign:PackIcon Width="50" Height="50"> <materialDesign:PackIcon.Style> <Style TargetType="materialDesign:PackIcon"> <Setter Property="Kind" Value="Pause"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding RealTimePaused}" Value="True"> <Setter Property="Kind" Value="Play"></Setter> </DataTrigger> </Style.Triggers> </Style> </materialDesign:PackIcon.Style> </materialDesign:PackIcon> </Button> <Button Margin="20 0 0 0" Background="#FF7777" BorderBrush="#FF7777" ToolTip="Clear real-time logs" Command="{Binding ClearRealTimeLogsCommand}"> <StackPanel Orientation="Horizontal"> <materialDesign:PackIcon Width="24" Height="24" Kind="DeleteSweep" /> <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">CLEAR</TextBlock> </StackPanel> </Button> </StackPanel> </Grid> </Border> <Grid Grid.Row="1" Background="{StaticResource TransparentBackgroundBrush400}"> <Grid Margin="10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <Grid> <Grid> <Grid> <DataGrid x:Name="grid" SelectedCellsChanged="grid_SelectedCellsChanged" Background="Transparent" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding Logs}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True"> <DataGrid.RowStyle> <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Transparent"></Setter> <Setter Property="Foreground" Value="{StaticResource AccentColorBrush}" /> <Setter Property="Cursor" Value="Hand"></Setter> </Trigger> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="Transparent"></Setter> </Trigger> <Trigger Property="IsFocused" Value="True"> <Setter Property="Background" Value="Transparent"></Setter> </Trigger> <!--<DataTrigger Binding="{Binding CallerMethodName}" Value="OnStartup"> <Setter Property="Background" Value="{StaticResource AccentColorBrush}"></Setter> <Setter Property="Foreground" Value="White" /> <Setter Property="FontWeight" Value="SemiBold"></Setter> <Setter Property="Cursor" Value="Arrow"></Setter> </DataTrigger>--> </Style.Triggers> </Style> </DataGrid.RowStyle> <DataGrid.CellStyle> <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="VerticalContentAlignment" Value="Center"></Setter> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="Transparent"></Setter> </Trigger> <!--<DataTrigger Binding="{Binding CallerMethodName}" Value="OnStartup"> <Setter Property="Background" Value="{StaticResource AccentColorBrush}"></Setter> <Setter Property="Foreground" Value="White" /> <Setter Property="FontWeight" Value="SemiBold"></Setter> <Setter Property="Cursor" Value="Arrow"></Setter> </DataTrigger>--> </Style.Triggers> </Style> </DataGrid.CellStyle> <DataGrid.Columns> <DataGridTemplateColumn Header="#"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <materialDesign:PackIcon Width="16" Height="16"> <materialDesign:PackIcon.Style> <Style TargetType="materialDesign:PackIcon"> <Setter Property="Kind" Value="Alert"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding Category}" Value="Info"> <Setter Property="Kind" Value="Information"></Setter> <Setter Property="Foreground" Value="DimGray"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Category}" Value="Warning"> <Setter Property="Kind" Value="Alert"></Setter> <Setter Property="Foreground" Value="{StaticResource OrangeBrush}"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Category}" Value="Error"> <Setter Property="Kind" Value="AlertOctagon"></Setter> <Setter Property="Foreground" Value="{StaticResource RedBrush100}"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Category}" Value="Critical"> <Setter Property="Kind" Value="BellPlus"></Setter> <Setter Property="Foreground" Value="Red"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Category}" Value="Debug"> <Setter Property="Kind" Value="Bug"></Setter> <Setter Property="Foreground" Value="{StaticResource GrayBrush300}"></Setter> </DataTrigger> <!--<DataTrigger Binding="{Binding CallerMethodName}" Value="OnStartup"> <Setter Property="Kind" Value="ClockFast"></Setter> <Setter Property="Foreground" Value="White"></Setter> </DataTrigger>--> </Style.Triggers> </Style> </materialDesign:PackIcon.Style> </materialDesign:PackIcon> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="DATE TIME" Binding="{Binding TimeStamp,StringFormat='MM/dd/yyyy HH:mm:ss.ff'}" /> <DataGridTextColumn Header="FILE" Binding="{Binding DebugLogResponse.FileName}" /> <DataGridTextColumn Header="LINE" Binding="{Binding DebugLogResponse.LineNumber}" /> <DataGridTextColumn Header="MODULE" Binding="{Binding DebugLogResponse.ModuleId}" /> <DataGridTextColumn Header="FILTER" Binding="{Binding DebugLogResponse.Filter}" /> <DataGridTemplateColumn Header="MESSAGE" Width="1*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding MessagePlusRepeated}" TextTrimming="CharacterEllipsis"></TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid> </Grid> </Grid> </Grid> </Grid> </Grid> </Grid> </UserControl>